Really stupid question regarding PEP 252 and type/class unification

Jacob Kaplan-Moss jacobkm at dont.spam.me.cats.ucsc.edu
Thu Aug 23 12:59:04 EDT 2001


[snip]
> > So here are some questions. Suppose I derive a class from
> > a base type:
> > 
> >     class MyInt(type(0)):
> >         pass
> > 
> >     myInt = MyInt()
> >     myInt = 5                     # Will this work? 
> 
> Of course these bindings are independent. This works too:
>     myInt = 5
>     myInt = "spam"

I think I see what Russel is getting at here... the point is, myInt is 
an instance of class MyInt when it is first created, but what if I want 
to change the value of myInt without modifying the class?  That is:

>>> class MyInt(int):  
...   pass
>>> x = MyInt()
>>> isinstance(x, MyInt)
1

So here x is still a MyInt object.  Now I want to change the x so that x 
holds the value 5 but is still a myInt object.  So I try:

>>> x = 5

but now:

>>> isinstance(x, MyInt)
0

So, the question is, can I treat a MyInt the same way as I can treat an 
int?  Or do I have to do something like "x.set(5)" or "x = MyInt(5)"?

Jacob



More information about the Python-list mailing list