[英]Q&A: Defining __getitem__ method or assigning __getitem__ in classes
當__getitem__
映射到內部序列類型時,建議使用以下哪種方法?
class A:
def __init__(self, ...):
...
self._internal_sequence = []
def __getitem__(self, key):
return self._internal_sequence[key]
class B:
def __init__(self, ...):
...
self._internal_sequence = []
def __getitem__(self, key):
# I'm pretty sure it won't be this one.
return self._internal_sequence.__getitem__(key)
class C:
_internal_sequence = []
__getitem__ = _internal_sequence.__getitem__
我在寫問題時意識到了答案,但我仍將其張貼在這里,以便其他人受益。
C)這似乎很好用,直到您意識到_internal_sequence是一個類變量並且將在各個類之間保留自己。 此外,重新定義_internal_sequence = [...]
似乎刪除了__getitem__
並導致IndexError
。
B)看起來不如A)好,對於內置類型,它會更慢-請參見此處 。
因此,A是將類的__getitem__
映射到內部序列的推薦方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.