I am trying to overload the "and" operatior, but my __and__ method is
never called. The code look like this:

class Filter:
        column = ""
        operator = ""
        value = ""

        def __init__(self, col, op, val):
                self.column = col
                self.operator = op
                self.value = val
                
        def toString(self):
                return self.column + " " + self.operator + " " + self.value
        
        def __and__(self, other):
                print "And"
                return And(self, other)
                
                
class And:
        lFilter = None
        rFilter = None

        def __init__(self, l, r):
                self.lFilter = l
                self.rFilter = r
                
        def toString(self):
                return "(" + self.lFilter.toString() + ") and (" +
self.rFilter.toString() + ")"

                
f1 = Filter("name", "=", "Kalle")
f2 = Filter("city", "=", "LA")
andFilter = (f1 and f2)
print andFilter.toString()

What is wrong with this code? The result when I run the script is
"city = LA". The AndFilter is never created.

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

Reply via email to