2011-06-11 5 views
5

Tengo un problema complicado en el juego en el que estoy trabajando. Estoy usando Pygame para desarrollarlo. Resulta que soy uno de esos desarrolladores que nunca usa la variable de objeto predeterminada __dict__; Siempre defino __slots__ para aclarar las variables que un objeto puede tener (tengo un método de clase que lee las ranuras para determinar las variables necesarias de un archivo de configuración).Python: supresión de la creación de la variable de clase __dict__ en una subclase

De todos modos, me acabo de dar cuenta de que este esfuerzo no está funcionando en algunas de mis clases; todavía tienen una variable __dict__ y pueden tener atributos arbitrarios asignados a, aunque explícitamente definen su __slots__. Creo que esto es porque están heredando de pygame.sprite.Sprite, que tiene un __dict__. Si este es el caso, ¿cómo suprimo la creación de este dict? (Creo que explícitamente definiendo __slots__ se suponía que) ¿O podría estar equivocado sobre la causa? Gracias por cualquier idea; es difícil encontrar información sobre este problema en particular a través de búsquedas.

+0

Si explica la razón por la que lo hace, puede haber una solución mejor. – ninMonkey

Respuesta

6

La única manera de suprimir atributos arbitrarios y la __dict__ contenedor de ellos, es el uso de __slots__ como eres y heredar de una clase que hace lo mismo. Una subclase de una clase que tiene un __dict__ siempre tendrá un __dict__. La única forma de evitarlo es no heredar de esta clase (pero, por ejemplo, use composition en su lugar.)

+0

Ah, eso es desafortunado. Gracias por la rápida respuesta. – dpitch40

Cuestiones relacionadas