Скажите, я определил этот дескриптор:
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
является простым целым числом, он становится атрибутом экземпляра?