python - 问答:在类中定义 __getitem__ 方法或分配 __getitem__
问题描述
__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__
and 原因IndexError
。
B) 这看起来不如 A) 好,并且对于内置类型,它会更慢 - 请参见此处。
因此,A 是将类映射__getitem__
到内部序列的推荐方式。
推荐阅读
- java - 从Java中的不同类引用对象时出错
- python - SciPy 广义特征值:eig 和 eigh 产生不同的结果
- python-3.x - 仅使用 Python 解决重复任务
- ios - AMP HTML 动画在 iPad 上的行为不正确
- python - Pandas groupby 累积/滚动总和、平均值和标准
- javascript - 如何从 Promise 访问数据
- python - Keras 预测得到不正确的形状?
- java - 从 obj2 转换或创建 obj1,其中 obj1 和 obj2 扩展相同的抽象类
- python - 将数据框转换为另一个数据框,将复合字符串单元格拆分为单独的行
- node.js - 如何确保在变量赋值之前返回数据(Node.js)