首页 > 解决方案 > 将对象列表与字符串进行比较

问题描述

我有一个对象列表,我想比较一个字符串(实际上是 int,但我可以将其转换为 str)以检查列表中的任何对象是否具有该字符串作为成员。

现在有一种方法可以遍历所有对象并将val1成员与我的字符串进行比较,但我想知道是否可以按照以下方式进行操作?

class Check:

    def __init__(self, val1):
        self.val1 = val1

    def __str__(self):
        return str(self.val1)


o1 = [Check(100)]
test = "100"

for x in o1:
    print(x)
print(test in o1)

print(test in o1)回报false

标签: pythonpython-3.x

解决方案


您可以覆盖__eq__运算符,如果other参数是字符串,也可以保持与另一个Check对象的比较

def __eq__(self, other):
    if isinstance(other, str):
        return other == str(self.val1)
    if isinstance(other, Check):
        return other.val1 == self.val1

推荐阅读