내가이 기술자 정의 말 :파이썬 : 왜 디스크립터를 인스턴스 변수로 사용할 수 없습니까?
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
는 클래스 속성이며 모든 인스턴스가 공유됩니다.
지금 나는이 정의하는 경우 :이 경우 value
에서
class MyClass2(object)
value = 1
>>> y1 = MyClass2()
>>> y1.value=1
>>> y2 = MyClass2()
>>> y2.value=2
>>> y1.value
1
은 인스턴스 속성이며, 인스턴스가 공유되지 않습니다.
value
이 설명자인 이유는 클래스 속성 일 수 있지만 value
이 인스턴스 속성이되는 이유는 무엇입니까?
어떻게()는 인스턴스 변수처럼 행동 할 MyDescriptor을 구현하는 것이 아마 당신은 이런 식으로 뭔가를 원하는? – Continuation
내가 제안한 것을 시도 했습니까? –
효과가있었습니다. 감사! 내 이전 의견은 귀하가 귀하의 답변에 대한 업데이트를보기 전에 작성되었습니다. – Continuation