不仅将布尔结果作为 PYTHON 中函数的输入,它本身还进行逻辑运算

Take logic operation it self not only the boolean result as a input of function in PYTHON

在 SqlAlchemy 中,我看到了这种类型的表达式:

s = select([users, addresses]).where(users.c.id == addresses.c.user_id)

看起来它不仅将布尔结果作为输入,还接受了它自己的逻辑运算。例如,如果我想构建一个像这样的函数:

def myfunc(argument): # I know its not right, I just want to show what I am suppose to do
    print(argument[key], argument[operation], argument[value])

myfunc(myage >= 10)

>> I want to get output like "myage", ">=" (or something similar), 10

有人知道怎么做吗?

谢谢

正如 指出的那样,这通过将比较运算符重载为 return 除了布尔值之外的其他东西来实现。这是一个小例子:

class col(object):
    def __init__(self, name):
        self.name = name

    def __lt__(self, other):
        return [self.name, '<', other]


def myfunc(arg):
    print(arg)

myage = col('myage')
myfunc(myage < 10)

导致

['myage', '<', 10]

重点是函数(myfunc)只"sees"参数表达式的求值结果。但是您可以通过重写 class.

__lt__ (小于)方法来控制(例如)评估“<”的方式

要使这项工作普遍适用,您必须覆盖更多 special methods