4
說我定義這個描述:Python:爲什麼不能描述符是實例變量?
class MyDescriptor(object):
def __get__(self, instance, owner):
return self._value
def __set__(self, instance, value):
self._value = value
def __delete__(self, instance):
del(self._value)
我用它在此:
class MyClass1(object):
value = MyDescriptor()
>>> m1 = MyClass1()
>>> m1.value = 1
>>> m2 = MyClass1()
>>> m2.value = 2
>>> m1.value
2
所以value
是一個類屬性,是由所有實例共享。
現在,如果我定義該:
class MyClass2(object)
value = 1
>>> y1 = MyClass2()
>>> y1.value=1
>>> y2 = MyClass2()
>>> y2.value=2
>>> y1.value
1
在這種情況下是value
實例屬性,而不是由實例共享。
爲什麼當value
是描述符時它只能是類屬性,但是當value
是一個簡單的整數時,它變成了一個實例屬性?
你將如何實現MyDescriptor(),使其表現得像一個實例變量? – Continuation 2011-05-10 03:26:01
你試過我的建議嗎? – 2011-05-10 03:28:26
它的工作。謝謝!我之前的評論是在我看到您對答案所做的更新之前做出的。 – Continuation 2011-05-10 03:32:45