Setting "value" of an int-derived class

Diez B. Roggisch deets at
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__.


More information about the Python-list mailing list