2011-06-11 5 views
5

J'ai un problème délicat dans le jeu sur lequel je travaille. J'utilise Pygame pour le développer. Je suis l'un de ces développeurs qui n'utilise jamais la variable par défaut __dict__; Je définis toujours __slots__ pour clarifier les variables qu'un objet peut avoir (j'ai un classmethod qui lit les slots pour déterminer les variables nécessaires à partir d'un fichier de configuration).Python - Suppression de la création de la variable de classe __dict__ dans une sous-classe

De toute façon, je viens de réaliser que cet effort ne fonctionne pas dans certaines de mes classes; ils ont toujours une variable __dict__ et peuvent avoir des attributs arbitraires, même s'ils définissent explicitement leurs attributs . Je pense que c'est parce qu'ils héritent de pygame.sprite.Sprite, qui a un __dict__. Si c'est le cas, comment puis-je supprimer la création de cette dict? (Je pensais explicitement définir __slots__ était censé) Ou pourrais-je me tromper sur la cause? Merci pour votre compréhension Il est difficile de trouver des informations sur ce problème particulier via des recherches.

+0

Si vous expliquez la raison pour laquelle vous le faites, il se peut qu'il existe une meilleure solution. – ninMonkey

Répondre

6

La seule façon de supprimer les attributs arbitraires et le conteneur __dict__ d'entre eux, est d'utiliser __slots__ que vous êtes et héritez d'une classe qui fait la même. Une sous-classe d'une classe ayant un __dict__ aura toujours un __dict__. La seule solution consiste à ne pas hériter de cette classe (mais, par exemple, utilisez composition à la place.)

+0

Ah, c'est malheureux. Merci pour la réponse rapide. – dpitch40

Questions connexes