Почему мы можем создавать атрибуты для объекта OrderedDict, но не для Dict? - PullRequest
0 голосов
/ 10 января 2020

При чтении некоторого кода я обнаружил, что можно создать новые атрибуты для объекта OrderedDict, но когда я попытался создать его для Python Dict, Python не позволил мне.

Просто интересно, почему это произошло и почему так хочется создавать атрибуты для OrderedDict, когда они могут устанавливать пары ключ-значение, используя OrderedDict.

1 Ответ

1 голос
/ 10 января 2020

OrderedDict реализован в Python, и вы можете присвоить любые атрибуты традиционному объекту Python (с некоторыми исключениями, например, когда определены __slots__). NB: Это не значит, что вы должны сделать это или что это часто хорошая идея, но это возможно. В частности, я не вижу какой-либо веской причины делать это с OrderedDict.

dict, напротив, является встроенным объектом и реализован в C. У него нет собственного __dict__ для хранения атрибутов, поэтому вы не можете назначать их.

...