簡體   English   中英

重新聲明一個類中“in”的方法

[英]Redeclaration of the method “in” within a class

我正在創建一個抽象數據類型,它創建一個雙向鏈表(不確定它是正確的翻譯)。 在其中我創建了一個方法__len__以正確的方式計算它的長度,一個方法__repr__來正確地表示它,但我現在不想創建一個方法,當用戶將使用以下內容時:

if foo in liste_adt

將返回正確的答案,但我不知道該使用什么,因為__in__不起作用。

謝謝,

你在尋找__contains__嗎?

object.__contains__(self, item)

被稱為實施會員測試運營商。 如果itemself中,則返回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

注意:通常當您遇到這種疑問時,可以在The Python Language ReferenceData Model部分找到引用

由於數據結構是鏈表,因此有必要對其進行迭代以檢查成員資格。 實現__iter__()方法會使if infor in工作。 如果有更有效的方法來檢查成員資格,請在__contains__()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM