Есть ли способ поиска в __repr__, похожем на строку в Python - PullRequest
0 голосов
/ 20 января 2020

В настоящее время я работаю над проектом, и я надеялся использовать метод __ repr __ для непосредственного просмотра списка и проверки наличия значения.

В настоящее время мой метод выглядит следующим образом :

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

Допустим, у меня есть ввод Item («Джерри», «123»), тогда мой объект, а не адрес памяти, теперь выглядит так:

Item('Jerry','123')

Однако, когда я пытаюсь проверить, соответствует ли вход, он возвращается как ложный. Например:

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

Есть ли способ взять __prr__ и сделать его строкой, по которой я могу искать?

Заранее благодарим вас за ваши идеи.

1 Ответ

0 голосов
/ 20 января 2020

Определите __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
...