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

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -