python - 将对象列表与字符串进行比较
问题描述
我有一个对象列表,我想比较一个字符串(实际上是 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
解决方案
您可以覆盖__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
推荐阅读
- datetime - DateTime <--> DateTimeOffset 的最佳实践
- javascript - 从数组中添加和删除数据以及如何在条件渲染中使用它?
- r - 使用 ggplot2 创建散点图,其中许多回归线基于所有点和分组变量,以及通过分组变量的点
- c - 具有输入检查和重试选项的功能
- c# - BigInteger 解析指数大于 1000 的科学记数法,结果为 9999
- javascript - clearTimeout() 返回 TypeError:无法读取未定义的属性“clearTimeout”
- python - 从另一个模块访问变量
- android - Picasso 加载图像,即使 recyclerView 中的特定位置没有图像 url?
- html - 溢出:隐藏如何影响块元素?
- mysql - 创建表时 MySQL Workbench 语法错误 1064