簡體   English   中英

問答:在類中定義__getitem__方法或分配__getitem__

[英]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.

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