overload builtin operator
Reinhold Birkenfeld
reinhold-birkenfeld-nospam at wolke7.net
Thu Aug 25 10:12:20 EDT 2005
Shaun wrote:
> Hi,
>
> I'm trying to overload the divide operator in python for basic arithmetic.
> eg. 10/2 ... no classes involved.
>
> I am attempting to redefine operator.__div__ as follows:
>
> # my divide function
> def safediv(a,b):
> return ...
>
> # reassign buildin __div__
> import operator
> operator.__div__ = safediv
>
> The operator.__dict__ seems to be updated OK but the '/' operator still
> calls buildin __div__
It won't work that way. You cannot globally modify the behaviour of an operator,
but you can customize how an operator works for your type.
Consider:
class safeint(int):
def __div__(self, other):
return safediv(self, other)
safeint(10)/2
Reinhold
More information about the Python-list
mailing list