On 15 Okt., 14:34, Mr.SpOOn <[EMAIL PROTECTED]> wrote: > Hi, > in a project I'm overloading a lot of comparison and arithmetic > operators to make them working with more complex classes that I > defined. > > Sometimes I need a different behavior of the operator depending on the > argument. For example, if I compare a object with an int, I get a > result, but if I compare the same object with a string, or another > object, I get another result. > > What is the best way to do this? Shall I use a lot of "if...elif" > statements inside the overloaded operator? Or is there a more pythonic > and dynamic way?
I can't see anything wrong about it. Sometimes I try to avoid isinstance() though because it is a rather slow operation. If the majority of operations is single-typed one can also use a try-stmt: def __add__(self, other): try: return self._val + other except TypeError: return self.__add__(SomeWrapper(other)) and compare performance using a profiler. Notice that also if type(obj) == T: BLOCK is much faster than isinstance() but it's not OO-ish and very rigid. -- http://mail.python.org/mailman/listinfo/python-list