인프런에서 파이썬 중급 강의가 2주 무료 수강이 가능하여 달리기 시작했다.
클래스변수
- 클래스 자체에 속해있다.
- 클래스 정의 바로 아래, 메서드 밖에서 정의 된다.
- 모든 인스턴스가 공유한다. → 클래스 변수는 단 하나만 존재하며, 모든 인스턴스에서 동일한 값을 참조한다.
- 클래스 이름으로 접근하거나, 인스턴스 객체 이름으로 접근이 가능하다.
- 클래스 내에서 공통으로 사용되는 값이나, 인스턴스 생성횟수를 카운트하는 용도로 사용된다.
인스턴스 변수
- 각각의 인스턴스에 속해 있다.
- init 메서드 내에서 self. 를 사용하여 정의된다.
- 각 인스턴스마다 독립적인 값을 가진다.
- 반드시 인스턴스 객체 이름으로만 접근해야한다. ( instance.variable)
클래스 변수는 영역이 다르다. 인스턴스 변수는 self 내것
네임스페이스 이해
def detail_info(self): 와 같이 self 가 들어가면 인스턴스 메소드라고 생각하면 됨.
# Instance Method 인스턴스 메소드
# self : 클래스로 만든 객체의 고유한 속성 값 사용
def detail_info(self):
print('Current Id : {}'.format(id(self)))
print('Car Detail Info : {} {}'.format(self._company, self._details.get('price')))
# Class Method 클래스 매소드는 첫번째 인자로 cls를 받는다.
@classmethod
def raise_price(cls, per):
if per <= 1:
print('Please Enter 1 or More')
return
cls.price_per_raise = per
return 'Succeed! price increased.'
클래스로 호출해도 되고, 인스턴스로 호출해도 가능하다.
# Bmw 여부(스테이틱 메소드 사용)
print('Static : ', Car.is_bmw(car1))
print('Static : ', Car.is_bmw(car2))
print()
print('Static : ', car1.is_bmw(car1))
print('Static : ', car2.is_bmw(car2))