Q&A:在类中定义_ugetItem_uuuuuuuu方法或分配_ugetItem_uuuuuuuu

2024-04-24 21:00:37 发布

您现在位置:Python中文网/ 问答频道 /正文

当映射到内部序列类型时,以下哪种方法是推荐的__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__

Tags: 方法keyself类型returninitdefpretty
1条回答
网友
1楼 · 发布于 2024-04-24 21:00:37

我在写问题的时候意识到了我的答案,但我还是会把它贴在这里,这样其他人可以从中受益

C)这似乎工作正常,直到您意识到_internal_序列是一个类变量,并且将在类之间保持自身。此外,重新定义_internal_sequence = [...]似乎可以删除__getitem__并导致IndexError

B)这看起来不像A)那么好,对于内置类型,速度会慢一些-请参见here

因此,建议将类的__getitem__映射到内部序列

相关问题 更多 >