我正在创建一个抽象数据类型,它创建一个双向链表(不确定它是正确的翻译)。在其中,我创建了一个方法 __len__ 来以正确的方式计算它的长度,一个方法 __repr__ 来正确表示它,但我现在不想创建一个方法,当用户做出类似的事情时:
if foo in liste_adt
将返回正确的答案,但我不知道该使用什么,因为 __in__ 不起作用。
谢谢你,
您在寻找吗__contains__ http://docs.python.org/py3k/reference/datamodel.html#object.__contains__?
object.__contains__(self, item)
要求实行会员资格测试运营商。应该返回 true 如果item is in self,否则为假。对于映射对象,应考虑映射的键而不是值或键项对。
对于没有定义的对象__contains__() http://docs.python.org/py3k/reference/datamodel.html#object.__contains__,成员资格测试首先尝试通过迭代__iter__() http://docs.python.org/py3k/reference/datamodel.html#object.__iter__,然后旧的序列迭代协议通过__getitem__() http://docs.python.org/py3k/reference/datamodel.html#object.__getitem__, see 语言参考中的这一部分 http://docs.python.org/py3k/reference/expressions.html#membership-test-details.
快速示例:
>>> 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
Note:通常,当您有此类疑问时,可以在以下位置找到参考资料:数据模型 http://docs.python.org/py3k/reference/datamodel.html#data-model的部分Python 语言参考 http://docs.python.org/py3k/reference/index.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)