在python中是否可以将Instance==string/int/float或任何数据类型设置为True? 类元素: 定义初始化(自身、名称、值): self.name=名称 自我价值=价值 定义报告(自我): 返回报告(自身值) 示例=元素(“项目”、“某个项目”) example==“某个项目”#错误
有没有办法使上述陈述在python中是否可以将Instance==string/int/float或任何数据类型设置为True? 类元素: 定义初始化(自身、名称、值): self.name=名称 自我价值=价值 定义报告(自我): 返回报告(自身值) 示例=元素(“项目”、“某个项目”) example==“某个项目”#错误,python,comparison,Python,Comparison,有没有办法使上述陈述正确而不是 example.value==“某个项目”#True 您可以为您的类实现\uuuu eq\uuuu() class Element: def __init__(self, val): self.val = val def __eq__(self, other): return self.val == other f = Element("some project") f == "some project" # Tr
正确
而不是
example.value==“某个项目”#True
您可以为您的类实现\uuuu eq\uuuu()
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
类元素:
定义初始化(自身、名称、值):
self.name=名称
自我价值=价值
定义报告(自我):
返回报告(自身值)
定义(自身、其他):
返回self.value==其他
示例=元素(“项目”、“某个项目”)
这称为“运算符重载”,它允许您为内置运算符(在本例中为=
运算符)定义自定义行为
请记住,运算符优先级和关联性都适用
有关这方面的更多信息,请参见。您可以尝试在类中重载
\uuuu eq\uuuu
和\uu ne\uuu
运算符
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)
推翻