class Element:
def __init__(self, name, value):
self.name = name
self.value = value
def __repr__(self):
return repr(self.value)
example = Element("project", "some project")
example == "some project" # False
有没有办法使上述陈述True
而不是
example.value == "some project" # True
您可以尝试重载类中的__eq__
和__ne__
运算符。
class Element:
def __init__(self, val):
self.val = val
def __eq__(self, other):
return self.val == other
f = Element("some project")
f == "some project" # True
是的,正如在评论中提到的那样,您需要覆盖该类的等于
例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class foo:
def __init__(self, x=0,name=""):
self.o=x
self.name=name
def __eq__(self, other):
#compare here your fields
return self.name==other
if __name__ == "__main__":
d1 = foo(1,"1")
d2=foo(1,"2")
print (d1=="1")
print ("1"==d1)
您可以为类实现__eq__()
。
class Element:
def __init__(self, name, value):
self.name = name
self.value = value
def __repr__(self):
return repr(self.value)
def __eq__(self, other):
return self.value == other
example = Element("project", "some project")
这称为"运算符重载",它允许您为内置运算符(在本例中为=
运算符(定义自定义行为。
请记住,运算符优先级和关联性都适用。
有关此内容的更多信息,请参阅 Python 文档。