python - How do I override a field in a base class with a property in a derived class? -
i have base class uses field:
class base(object): def __init__(self, member): self.member = member
and derived class promote property, , add behaviour:
class derived(base): @property def member(self): return super(derived, self).member @member.setter def member(self, value): print "intercepting setter" super(derived, self).member = value
however, doesn't correctly delegate base class:
>>> d = derived(0) intercepting setter traceback (most recent call last): file "<pyshell#8>", line 1, in <module> d = derived(0) file "<pyshell#3>", line 3, in __init__ self.member = 2 file "<pyshell#6>", line 9, in member super(derived, self).member = value attributeerror: 'super' object has no attribute 'member'
how should doing this?
you're trying access super's member
if class attribute. try with:
class derived(base): @property def member(self): print "intercepting getter" return self._member @member.setter def member(self, value): print "intercepting setter" self._member = value
Comments
Post a Comment