Есть ли недостатки использования __slots__? - PullRequest
1 голос
/ 19 апреля 2019

Я использую Python 3.7 и Django. Я читал о "_slots__" - http://book.pythontips.com/en/latest/slots__magic.html. Очевидно, _slots можно использовать для оптимизации выделения памяти для большого количества этих объектов, выполнив это ...

class MyClass(object):
    __slots__ = ['name', 'identifier']
    def __init__(self, name, identifier):
        self.name = name
        self.identifier = identifier
        self.set_up()

Мой, пожалуй, очевидный вопрос: почему бы нам не захотеть сделать это для всех объектов? Есть ли недостатки в использовании _slots __?

1 Ответ

1 голос
/ 19 апреля 2019

Свободный Питон от Лучано Рамальо перечисляет следующие предостережения

• Вы должны помнить, чтобы переопределить __slots__ в каждом подклассе, так как Унаследованный атрибут игнорируется интерпретатором.

• Экземпляры будут иметь возможность иметь только атрибуты, перечисленные в __slots__, если только вы включите __dict__ в __slots__ - но это может свести на нет память сбережения.

• Экземпляры не могут быть объектами слабых ссылок, если только вы не забудьте включить __weakref__ в __slots__.

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