Итак, я играл с Python, отвечая на этот вопрос, и я обнаружил, что это неверно:
o = object()
o.attr = 'hello'
из-за AttributeError: 'object' object has no attribute 'attr'
. Однако с любым классом, унаследованным от объекта, он действителен:
class Sub(object):
pass
s = Sub()
s.attr = 'hello'
Печать s.attr
отображает "привет", как и ожидалось. Почему это так? Что в спецификации языка Python указывает, что вы не можете назначать атрибуты для ванильных объектов?