为什么我们在通过super调用时必须使用__dunder__方法而不是运算符?
- 论坛
- 为什么我们在通过super调用时必须使用__dunder__方法而不是运算符?
6 浏览
为什么我们在通过super调用时必须使用__dunder__方法而不是运算符?
为什么我们必须使用__getitem__
而不是通常的运算符访问?
class MyDict(dict): def __getitem__(self, key): return super()[key]
我们会得到TypeError: 'super' object is not subscriptable
的错误。
我们必须使用super().__getitem__(key)
,但我从未完全理解为什么——是什么导致super不能以允许运算符访问的方式实现?
Subscriptable只是一个例子,我对__getattr__
、__init__
等也有同样的疑问。
文档试图解释为什么,但我不理解。