Setting "value" of an int-derived class

Diez B. Roggisch deets at nospam.web.de
Sun Sep 3 01:23:18 CEST 2006


Ken Schutte schrieb:
> Lets say I want an integer class that lets you attach arbitrary 
> attributes.  I can simply do:
> 
> class foo(int): pass
> 
> x = foo(5)
> x.text = "okay"
> print x, x.text   # prints "5 okay"
> 
> So, that's good.  But, how can I change the value of x from 5 to 
> something else, without creating a new instance?
> 
> I suppose I could create a function that creates a new "foo" and copies 
> its attributes, but is there a more direct way?  Is the value "5" stored 
> in some special attribute I can just directly modify?

You can't do that - the base class is immutable. Subclassing doesn't 
change that.

What you can do of course in to create a class foo that will store its 
value in an attribute, and overload the arithmetic operators and methods 
like __int__, __long__ and __float__.

Diez



More information about the Python-list mailing list