Python - подавление создания переменной класса __dict__ в подклассе - PullRequest
5 голосов
/ 11 июня 2011

У меня есть хитрая проблема в игре, над которой я работаю. Я использую Pygame для его разработки. Я оказался одним из тех разработчиков, которые никогда не использовали переменную объекта __dict__ по умолчанию; Я всегда определяю __slots__, чтобы уточнить переменные, которые может иметь объект (у меня есть метод класса, который читает слоты для определения переменных, необходимых из файла конфигурации).

Так или иначе, я только что понял, что это усилие не работает в некоторых из моих классов; они по-прежнему имеют переменную __dict__ и могут иметь произвольные атрибуты, даже если они явно определяют их __slots__. Я думаю, это потому, что они наследуются от pygame.sprite.Sprite, который имеет __dict__. Если это так, как я могу подавить создание этого диктата? (Хотя я явно определял __slots__ должен был) Или я мог ошибиться в причине? Спасибо за понимание; трудно найти информацию об этой конкретной проблеме с помощью поисков.

1 Ответ

6 голосов
/ 11 июня 2011

Единственный способ подавить произвольные атрибуты и их контейнер __dict__ - это использовать __slots__, если вы и наследовать от класса, который делает то же самое . Подкласс класса, который имеет __dict__, всегда будет иметь __dict__. Единственный способ обойти это - не наследовать от этого класса (но вместо этого использовать состав .)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...