getter 및 setter의 광범위한 사용에서 속성의 비단뱀 사용으로 일부 클래스를 변경하고 있습니다.
하지만 이제는 이전 getter 또는 setter 중 일부가 기본 클래스의 해당 메서드를 호출 한 다음 다른 작업을 수행하기 때문에 문제가 발생합니다. 그러나 이것이 속성으로 어떻게 이루어질 수 있습니까? 부모 클래스에서 속성 getter 또는 setter를 호출하는 방법은 무엇입니까?
물론 속성 자체를 호출하는 것만으로도 무한 재귀를 얻을 수 있습니다.
class Foo(object):
@property
def bar(self):
return 5
@bar.setter
def bar(self, a):
print a
class FooBar(Foo):
@property
def bar(self):
# return the same value
# as in the base class
return self.bar # --> recursion!
@bar.setter
def bar(self, c):
# perform the same action
# as in the base class
self.bar = c # --> recursion!
# then do something else
print 'something else'
fb = FooBar()
fb.bar = 7
Foo.bar.fset(self, c)
상속 된 setter를 호출해야하는 이유는 무엇 입니까?Foo.bar.fset(c)
"자기"없이는 왜 안 되겠습니까?