L.C. Rees wrote: > Can custom __setattr__ methods and properties be mixed in new style > classes? > > I experimented with a new style class with both a custom __setattr__ > method and a property. Attributes controlled by the __setattr__ method > work fine. When I attempt to set or get the property it raises the > error: "TypeError: _settext() takes exactly two arguments (1 given)". > This suggests that the __setattr__ may be conflicting with assignment > to the property since it doesn't seem the class name is being passed to > the property when it's created. This is the code for the property at > the end of the class definition: > > def _settext(self, txt): > self._tree.text = txt > > def _gettext(self, txt): > return self._tree.text > > def _deltext(self, txt): > self._tree.text = '' > > text = property(_settext, _gettext, _deltext) > The order to call property is get, set, del, doc You need to take a _lot_ more care before asking for help. neither get not del take any arg besides self. When you are trying to debug an interaction, make sure your tests work stand- alone.
class Holder(object): pass # to allow attributes stuck on class Demo(object): def __init__(self): self._tree = Holder() def _settext(self, txt): self._tree.text = txt def _gettext(self): return self._tree.text def _deltext(self): self._tree.text = '' text = property(_gettext, _settext, _deltext, 'text property') d = Demo() d.text = 'my text' print repr(d.text) del d.text print repr(d.text) --Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list