Tor Erik Sønvisen wrote:

> Does anyone know how to interrupt the lookup of an integer value? I
> know I need to subclass int, since builtin types can't be altered
> directly...
> 
> Below is how far I've come... What I want is to tap into the access of
> instance i's value 1...
> 
>>>> class Int(int):
>       def __init__(self, *a, **k):
>               super(Int, self).__init__(self, *a, **k)
> 
>               
>>>> i = Int(1)
>>>> i
> 1

You may be looking for __new__() which is invoked before an object is
created. This is particular useful for immutables like int.

>>> lookup = {}
>>> class Int(int):
...     def __new__(cls, value, *more):
...             if not more:
...                     try:
...                             return lookup[value]
...                     except KeyError:
...                             pass
...             return int.__new__(cls, value, *more)
... 
>>> lookup["answer"] = Int(42)
>>> Int("answer")
42
>>> type(_)
<class '__main__.Int'>

Peter
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to