Чтобы ответить на ваш второй вопрос, где _v
?
Ваша версия дескриптора сохраняет _v
в самом дескрипторе. Каждый экземпляр дескриптора (экземпляр уровня класса SomeClass1
и все экземпляры уровня объекта в объектах класса SomeClass2
будут иметь различные значения _v
.
Посмотрите на эту версию. Эта версия обновляет объект, связанный с дескриптором. Это означает, что объект (SomeClass1
или x2
) будет содержать атрибут _v
.
class MyDescriptor(object):
def __get__(self, obj, type=None):
print "get", self, obj, type
return obj._v
def __set__(self, obj, value):
obj._v = value
print "set", self, obj, value