是否可以在python中使Instance ==字符串/int/float或任何数据类型为True?


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 文档。

相关内容

  • 没有找到相关文章

最新更新