Используя python, можно установить атрибут экземпляра одним из следующих двух способов:
>>> class Foo(object):
pass
>>> a = Foo()
>>> a.x = 1
>>> a.x
1
>>> setattr(a, 'b', 2)
>>> a.b
2
Можно также назначать свойства через декоратор свойств.
>>> class Bar(object):
@property
def x(self):
return 0
>>> a = Bar()
>>> a.x
0
У меня вопрос, как я могу назначить свойство экземпляру?
Моя интуиция состояла в том, чтобы попробовать что-то подобное ...
>>> class Doo(object):
pass
>>> a = Doo()
>>> def k():
return 0
>>> a.m = property(k)
>>> a.m
<property object at 0x0380F540>
... но я получил этот странный объект свойства. Подобные эксперименты дали аналогичные результаты. Я предполагаю, что свойства в некотором отношении более тесно связаны с классами, чем с экземплярами, но я недостаточно хорошо знаю внутреннюю работу, чтобы понять, что здесь происходит.