当__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__
答案 0 :(得分:2)
我在写问题时意识到了答案,但我仍将其张贴在这里,以便其他人受益。
C)这似乎很好用,直到您意识到_internal_sequence是一个类变量并且将在各个类之间保留自身。此外,重新定义_internal_sequence = [...]
似乎会删除__getitem__
并导致IndexError
。
B)看起来不像A)不错,对于内置类型,它会更慢-请参见here。
因此,A是将类的__getitem__
映射到内部序列的推荐方法。