is it possible to add a property to an instance?
Diez B. Roggisch
deets at nospam.web.de
Tue Jul 22 08:51:30 EDT 2008
Darren Dale wrote:
> Does anyone know if it is possible to add a property to an instance at
> runtime? I didn't see anything about it in the standard library's new
> module, google hasn't turned up much either.
Depending on what you *really* want - yes or no.
It is *not* possible to have a property *only* on one instance, because
properties rely on the descriptor-protocol being used, and that only works
for class-attributes. So it's not a matter of "only" adding
a = Foo()
a.something = property(...)
However, you can of course try & come up with a scheme that only invokes
getters and setters if defined, and otherwise returns a
default-value/raises an attribute-error. Roughly like this:
class Base(object):
def x_get(self):
return self.x_get_overload()
x = property(x_get)
a = Base()
def foo(self):
return "something"
a.x_get_overload = new.instancemethod(foo)
Diez
More information about the Python-list
mailing list