什么是扩展python Dict

时间:2017-08-10 12:01:58

标签: python dictionary

跨越代码,其中一个类扩展了Dict类并覆盖了方法。

以下代码段是我无法理解的:

class HeaderKeyDict(dict):
"""
A dict that title-cases all keys on the way in, so as to be
case-insensitive.
"""
    # More methods

    def __getitem__(self, key):
        return dict.get(self, key.title())

    def get(self, key, default=None):
        return dict.get(self, key.title(), default)

   # More methods

令我困惑的是什么是dict.get(self,...)在做什么?这与dict.get(key)方法类似吗?

当我们对这个类对象执行[]时,dict.get(self)会调用self.get()方法吗?

1 个答案:

答案 0 :(得分:1)

在这种情况下,dict.get(self, key.title())相当于super().get(key.title())。它正在呼唤"原创" .get类的dict方法,但迫使key成为" titlized"。

要理解为什么dict.get(self, key.title())等同于super().get(key.title()),请让我们看一下更简单的类:

class Foo:
    def bar(self):
        print('bar')

现在,调用Foo().bar()与调用Foo.bar(Foo())相同。这与没有继承的情况基本相同。