Как я могу создать свойство для класса в init?
Если я использую этот код:
In [1]: import functools
In [2]: def test(id, wrap):
...: return id*2
In [3]: class A(object):
...: def __init__(self, id):
...: self.id = id
...: setattr(self.__class__, 'testing', property(functools.partial(test, self.id)))
In [4]: cl = []
In [5]: for i in range(5):
...: cl.append(A(i))
...:
In [6]: for b in cl:
...: print b.testing
Я получаю:
8
8
8
8
8
Я понимаю, почему это так (потому что свойство устанавливается для класса, а не, например). Но я не понимаю, как добавить свойство к экземпляру? Если использовать self в setattr, я получаю:
<property object at 0x1018def70>
<property object at 0x1018e9050>
<property object at 0x1018e9100>
<property object at 0x1018e91b0>
<property object at 0x1018e9260>
Я читаю эту тему: Создаю свойства класса , но не понимаю, как поставить id в метакласс