繁体   English   中英

使用==检查python中两个对象的值是否相同

[英]use == to check if two objects have the same value or not in python

以下是代码:

class foo:
   def __init__(self,p1,p2):
       self.a1 = p1
       self.a2 = p2

def main():
    o1=foo("lucy","jack")
    o2=foo('lucy','jack')
    print(o1==o2)
main()

我知道o1和o2是不同的对象。 让我感到困惑的是,它们具有相同的价值,对吗? 然后使用“ ==”来检查两个对象是否具有相同的值,对吗? 我在这里想念什么吗?

您需要实现自定义__eq__

class foo:
    def __init__(self,p1,p2):
        self.a1 = p1
        self.a2 = p2

    def __eq__(self, another):
        return self.a1 == another.a1 and self.a2 == another.a2   

def main():
    o1=foo("lucy","jack")
    o2=foo('lucy','jack')
    print(o1==o2)
main()

当python不知道如何比较对象时,它会检查您是否在处理同一实例。 这与is运算符所做的相同。

如果要覆盖python比较对象的方式-您将需要在类中定义__eq__方法。

有关更多信息,请参阅文档

如果要将相等的对象定义为具有所有相同实例变量的对象,则可以轻松编写代码以测试每个变量:

class foo:
    def __init__(self,p1,p2):
        self.a1 = p1
        self.a2 = p2

    def __eq__(self, other):
        return self.__dict__ == other.__dict__


def main():
    o1=foo("lucy","jack")
    o2=foo('lucy','jack')
    print(o1==o2)
main()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM