【问题标题】:Is there a way to search in an __repr__ similar to a string in Python有没有办法在 __repr__ 中搜索类似于 Python 中的字符串
【发布时间】:2020-05-06 19:17:24
【问题描述】:

我目前正在做一个项目,我希望使用 __repr __ 方法直接查看列表并查看是否存在值。

目前,我的方法是这样的:

def __ repr__(self):
     return 'Item({!r},{!r})'.format(self._id_code, self._title)

假设我有一个 Item("Jerry","123") 的输入,那么我的对象,而不是给出内存地址,现在看起来像这样:

Item('Jerry','123')

但是,当我尝试检查输入是否匹配时,它会返回 false。例如:

print('123' in Item('Jerry','123')) # This comes back as False

有没有办法获取一个 __repr__ 并将其变成我可以搜索的字符串?

提前感谢您的见解。

【问题讨论】:

    标签: python string magic-methods repr


    【解决方案1】:

    定义__contains__实现值查找。

    class Item:
        ...
    
        def __contains__(self, v):
            return self._id_code == v or self._title == v
    
    
    >>> assert i._id_code == 'Jerry'
    >>> assert i._title = '123'
    >>> '123' in i
    True
    >>> 'Jerry' in i
    True
    >>> 'Bob' in i
    False
    

    【讨论】:

    • 我把这个问题告诉了其他人,他们中的许多人建议我使用__contains__ 方法,因为它会是一个更好的方法。感谢您提供此示例!
    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    相关资源
    最近更新 更多