在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)
推翻