2011-06-11 2 views
5

저는 작업중인 게임에서 까다로운 문제가 있습니다. 나는 그것을 개발하기 위해 파이 게임을 사용하고 있습니다. 나는 객체 변수 default __dict__을 절대로 사용하지 않는 개발자 중 한 명입니다. 나는 항상 객체가 가질 수있는 변수를 명확히하기 위해 __slots__을 정의합니다 (설정 파일에서 필요한 변수를 결정하기 위해 슬롯을 읽는 classmethod가 있습니다).Python - 하위 클래스에서 __dict__ 클래스 변수 생성을 억제합니다.

어쨌든, 나는이 수업이 일부 수업에서 작동하지 않는다는 것을 깨달았습니다. 그들은 여전히 ​​__dict__ 변수를 가지며 명시 적으로 __slots__을 정의하더라도 임의의 속성을 할당 할 수 있습니다. 나는 그들이 pygame.sprite.Sprite를 상속하고 있기 때문에 이것은 __dict__을 가지고 있기 때문이라고 생각한다. 이 경우,이 Dict의 작성을 어떻게 억제합니까? (나는 명시 적으로 __slots__을 정의 했음에도 불구하고) 또는 원인에 대해 오인 될 수 있습니까? 어떤 통찰력에도 감사드립니다. 검색을 통해이 특정 문제에 대한 정보를 찾는 것이 어렵습니다.

+0

그렇게하는 이유를 설명하면 더 나은 해결책이 될 수 있습니다. – ninMonkey

답변

6

임의의 속성과 그들의 __dict__ 용기를 억제 할 수있는 유일한 방법은, 당신이 을하고 같은 않는 클래스에서 상속으로 __slots__을 사용하는 것입니다. __dict__ 클래스의 하위 클래스는 항상 __dict__입니다. 그 주위의 유일한 방법은이 클래스에서 상속하지 않는 것입니다 (예를 들어, 대신 composition을 사용하십시오.)

+0

아, 그건 불행한 일입니다. 빠른 답변 감사합니다. – dpitch40

관련 문제