Linear Block code를 구현하는 이동통신 과제를 하면서 파이썬으로 구현하는 것을 택했다.
과제 구현에 앞서, 파이썬 클래스 개념은 눈치껏 알기만 하고 제대로 알지 못해 이번 기회에 정리해보려고 한다.
class
키워드 사용class CustomerClass:
def __init__(self, param):
# write code
from ~ import ~
로 import 가능f = Flight()
class Flight:
def number(self):
return 'SN060'
from airtravel import Flight
f = Flight()
f.number()
생성자로 객체 생성을 호출받으면
1) __new__
를 호출하여 객체를 생성할당
2) __init__
메소드를 호출하여 객체에서 사용할 초기값들을 초기화
__init__
메소드만 오버라이딩하여 객체 초기화에만 이용class Flight:
def __init__(self):
print('init')
super().__init__()
def __new__(cls):
print('new')
return super().__new__(cls)
def number(self):
return 'SN060'
< 출력 결과>
new
init
이번에는 객체의 속성을 초기화해보자.
class Flight:
def __init__(self, number):
self._number = number
def number(self):
return self._number
_
는 내부적으로 사용되는 변수, 파이썬 기본 키워드와 충돌을 피하기 위한 변수이다.from airtravel import Flight
f = Flight(5)
f.number()
f._number
위에 두 코드는 동일한 결과를 출력한다.
파이썬은 기본적으로 접근제어자가 없으며, 기본적으로 모두 Public이다.
초기화자에 객체의 불변성을 확립하자 (유효성 검증을 수행)
__init__
에서 validation을 수행raise ValueError("왜 에러가 발생했는지 적어주세요.")
클래스 외부에서 변수에 접근하는 것을 막기 위해 __(더블 언더바)
를 사용하자.
파이썬은 메소드 오버로딩이 없다.