Robin Becker wrote: > Is there a way to override a data property in the instance? Do I need to > create > another class with the property changed? > -- > Robin Becker
It is possible to decorate a method in a way that it seems like property() respects overridden methods. The decorator cares polymorphism and accesses the right method. def overridable(f): def __wrap_func(self,*args,**kwd): func = getattr(self.__class__,f.func_name) if func.func_name == "__wrap_func": return f(self,*args,**kwd) else: return func(self,*args,**kwd) return __wrap_func class A(object): def __init__(self, x): self._x = x @overridable def get_x(self): return self._x x = property(get_x) class B(A): def get_x(self): return self._x**2 class C(B):pass >>> a = A(7) >>> a.x 7 >>> b = B(7) >>> b.x 49 >>> c = C(7) >>> c.x 49 -- http://mail.python.org/mailman/listinfo/python-list