는 self.__class__.variable
을 사용 안함 - 같은 변수가 모든 서브 클래스에 의해 공유하지 않으려면. 이 같은 코드에서
:
class Ant:
count = 0
은 "카운트"값은 '클래스에 __dict__
속성에 저장됩니다. 당신은 같은 것을 할 경우 : 인스턴스 "자기"의 count
의 어떤 인스턴스가없는보고, 그 클래스의 값을 검색합니다 파이썬의 데이터 모델에 정의 된
class Ant:
count = 0
def __init__(self):
print(self.count)
attrobute 액세스 메커니즘을. 따라서 이 클래스 변수의 값인을 읽으면 정상적인 인스턴스로 사용할 수 있습니다. 코드가 같이가는 경우
그러나 : 어떻게됩니까
def __init__(self):
self.count += 1
는 전체 다른 것들을 인 : 파이썬 는 위 클래스의 속성은, 여기에 1을 추가를 읽어 들여, 새로운 결과에 저장 인스턴스.
그래서, 당신은 클래스 값에 액세스 할 때마다, 당신이 중 하나를 수행 할 수 있습니다 하드 코드 클래스 이름은 - (메소드 코드가 실행될 때 이후로, 클래스가 이미 생성되어 "알려진"입니다) :
class Ant:
count = 0
def __init__(self):
Ant.count += 1
또는 더 나은 아직, 인스턴스의 __class__
속성 사용 - 위의 두 번째 예에서, 서브 클래스가 더 포함되어있는 경우처럼 항상 적절한 서브 클래스
class Ant:
count = 0
def __init__(self):
self.__class__.count += 1
class FireAnt(Ant):
count = 0
의 변수 값 (즉,을,주의를 얻을 것이다 그런 식으로 자신의 count
변수, 값 수퍼 클래스 'count
이 읽히고,이 코드가 처음 실행될 때 서브 클래스에 새로운 것이 생성 될 것입니다.)
'count' in'__init__'는 단지 보통 지역 변수입니다. * 클래스 수준 변수 * –