为什么我们在通过super调用时必须使用__dunder__方法而不是运算符?

6 浏览
0 Comments

为什么我们在通过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__等也有同样的疑问。

文档试图解释为什么,但我不理解。

0