lpo*_*ula 4 python adt python-3.x
我正在创建一个抽象数据类型,它创建一个双向链表(不确定它是正确的翻译).在其中我创建了一个方法__len__以正确的方式计算它的长度,一个方法__repr__来正确地表示它,但我现在不想创建一个方法,当用户将使用以下内容时:
if foo in liste_adt
Run Code Online (Sandbox Code Playgroud)
将返回正确的答案,但我不知道该使用什么,因为__in__不起作用.
谢谢,
Rik*_*ggi 11
你在找__contains__?
object.__contains__(self, item)被称为实施会员测试运营商.如果item在self中,则返回true ,否则返回false.对于映射对象,这应该考虑映射的键而不是值或键 - 项对.
对于未定义的对象,
__contains__()成员资格测试首先尝试迭代__iter__(),然后是旧的序列迭代协议__getitem__(),请参阅语言参考中的此部分.
快速举例:
>>> class Bar:
... def __init__(self, iterable):
... self.list = list(iterable)
... def __contains__(self, item):
... return item in self.list
>>>
>>> b = Bar([1,2,3])
>>> b.list
[1, 2, 3]
>>> 4 in b
False
>>> 2 in b
True
Run Code Online (Sandbox Code Playgroud)
注意:通常当您遇到这种疑问时,可以在The Python Language Reference的Data Model部分找到引用.