Looking for assignement operator
laurent.pointal at limsi.fr
Tue Oct 17 16:15:39 CEST 2006
Alexander Eisenhuth a écrit :
> is there a assignement operator, that i can overwrite?
Adding to Simon Brunning reply (assignment is a statement).
> class MyInt:
> def __init__(self, val):
> assert(isinstance(val, int))
> self._val = val
> a = MyInt(10)
> # Here i need to overwrite the assignement operator
> a = 12
Here you bind the 12 (Python int value) to name 'a', then 'a' has the
int type, not your MyInt (which value has been lost).
You may define a 'set' method, and write:
a = MyInt(10)
And, if a is a member of another class, you may define an accessor for
that 'a' member in that class, which automatically call your set method
when giving an int value.
b.a = MyInt(10)
b.a = 12 ---> b.a.set(12)
More information about the Python-list