Можно ли создавать атрибуты вне области видимости? - PullRequest
3 голосов
/ 12 октября 2011

Можно ли добавить атрибуты к объекту за пределами его области видимости?

I.e: следующий код не работает, как мне сделать то, что я собирался сделать с этим кодом?

b = object()
b.foo = "bar"

Ответы [ 2 ]

5 голосов
/ 12 октября 2011

Экземпляры object() по своему замыслу " безликие ", так как не имеют никаких магических методов (без разборчивости, без методов получения / установки, без итерации и т. Д.) Для определения поведения по умолчанию, которое вы можетеожидать от других типов.Для того, чтобы он работал, сначала необходимо создать подкласс object:

class Foo(object): pass
f = Foo()
f.bar = "omgwtf!"
5 голосов
/ 12 октября 2011

В общем, это возможно.Однако это невозможно для большинства типов, которые реализованы в C, а не в Python.К сожалению, это относится к наиболее часто используемым встроенным типам стандартного интерпретатора Python.

Если вы определите свой собственный класс в Python, вы увидите, что он работает нормально.

class MyObject(object):
    pass

b = MyObject()
b.foo = "bar"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...