你不能,因为in
运算符在语义上与对象“包含”另一个对象的含义的定义相关联。所以操作必须在容器类中定义(这里,list
),而不是值 (Field
).
为了显示,in
在你的情况下应该这样使用:
Field('a') in [Field('a'), Field('b'), Field('c')]
这当然不是你想要的。
正如您在评论中提到的,您在这里可以得到的最接近的东西是使用 Django 之类的东西fieldname__in==[1, 2, 3, 4]
或 SQLAlchemy 的Table.fieldname.in_([1, 2, 3, 4])
。例如,您可以添加一个方法Field
:
Field('a').is_in([1, 2, 3])
另一种方法是创建一个特定的容器类,以便您可以编写:
Field('a') in Values([1, 2, 3])
但它不仅更冗长(需要额外的导入),而且我认为更难理解背后到底发生了什么。
这也可以工作:
Field('a') == [1, 2, 3]
但同样,它感觉更“神奇”和令人困惑,因为它不尊重==
.