Le mercredi 06 septembre 2006 16:33, David Isaac a écrit : > Suppose a class has properties and I want to change the > setter in a derived class. If the base class is mine, I can do this: > http://www.kylev.com/2004/10/13/fun-with-python-properties/ > Should I? (I.e., is that a good solution?)
Why not ? This ontroduce the notion of public getter a la C++/Java while the property is overloadable by itself (as below), but it's correct design IMHO. > And what if I cannot change the base class? > How to proceed then? Like that : In [44]: class a(object) : ....: p=property(lambda s : getattr(s, '_p', None)) ....: ....: In [46]: class b(a) : ....: p=property(a.p.fget, lambda s, v : setattr(s, '_p', v)) ....: ....: In [47]: print a().p None In [48]: a().p = 5 --------------------------------------------------------------------------- exceptions.AttributeError Traceback (most recent call last) /home/maric/<ipython console> AttributeError: can't set attribute In [49]: ib=b() In [50]: print ib.p None In [51]: ib.p = 5 In [52]: print ib.p 5 In [53]: ib._p Out[53]: 5 -- _____________ Maric Michaud _____________ Aristote - www.aristote.info 3 place des tapis 69004 Lyon Tel: +33 426 880 097 -- http://mail.python.org/mailman/listinfo/python-list