Pablo ha escrito: > Hello all, sorry if this is a faq... > > Problem: The intended effect is to override the method 'getattr' in a > way that i dont need to override the property explicitly too. > > class Base(object): > def __init__(self, attr): > self._attr = attr > def getattr(self): > return self._attr > attr = property(fget=getattr) > > class Derived(Base): > def getattr(self): > return 2*self._attr > > if __name__ == "__main__": > b = Base(4) > d = Derived(4) > print b.attr, d.attr > > output>> 4 8 ... so this does not work as i would like it to. sorry, i meant the following sentence: output>> 4 4 ... so this does not work as i would like it to. > > First solution: This is not what i want. > > class Derived(Base): > def getattr(self): > return 2*self._attr > attr = property(fget=getattr) > > Second solution: This is what i want, but... > > class Base(object): > def __init__(self, attr): > self._attr = attr > def getattr(self): > return self._attr > attr = property(fget=lambda self: self.getattr()) > > class Derived(Base): > def getattr(self): > return 2*self._attr > > Question: Isn't there an *alternative* way to do it without the lambda > function? > > Thanks in advance!
-- http://mail.python.org/mailman/listinfo/python-list