Let's say I define this handle:
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)
And I use it in this:
class MyClass1(object): value = MyDescriptor() >>> m1 = MyClass1() >>> m1.value = 1 >>> m2 = MyClass1() >>> m2.value = 2 >>> m1.value 2
So, value is an attribute of the class and is used by all instances.
Now, if I define this:
class MyClass2(object) value = 1 >>> y1 = MyClass2() >>> y1.value=1 >>> y2 = MyClass2() >>> y2.value=2 >>> y1.value 1
In this case, value is an attribute of the instance and is not used by the instances.
Why, when value is a descriptor, it can only be an attribute of a class, but when value is a simple integer, does it become an instance attribute?
source share