Lucasm wrote: > On 19 Okt, 18:28, Steven D'Aprano <st...@remove-this- > cybersource.com.au> wrote: >> On Tue, 19 Oct 2010 06:39:56 -0700, Lucasm wrote: >> > Hi, >> >> > A question. Is it possible to dynamically override a property? >> >> > class A(object): >> > @property >> > def return_five(self): >> > return 5 >> >> > I would like to override the property for an instance of A to say the >> > string 'bla'. >> >>> class A(object): >> >> ... _five = 5 # class attribute shared by all instances >> ... @property >> ... def return_five(self): >> ... return self._five >> ... >> >> >>> a = A() >> >>> a._five = 'bla' # set an instance attribute >> >>> b = A() >> >>> print a.return_five >> bla >> >>> print b.return_five >> >> 5 >> >> -- >> Steven > > Thanks for the answers. I would like to override the property though > without making special modifications in the main class beforehand. Is > this possible?
You can dynamically change the instance's class: >>> class A(object): ... @property ... def five(self): return 5 ... >>> a = A() >>> b = A() >>> class B(type(b)): ... @property ... def five(self): return "FIVE" ... >>> b.__class__ = B >>> a.five 5 >>> b.five 'FIVE' But still -- what you are trying looks like a bad idea. What's your usecase? Peter -- http://mail.python.org/mailman/listinfo/python-list