这两个班级有什么区别?

zjm*_*126 1 python

class SortedDict(dict):
    def __init__(self, data=None):
        if data is None:
            data = {}
        super(SortedDict, self).__init__(data)
Run Code Online (Sandbox Code Playgroud)

class SortedDict(dict):
    def __init__(self, data={}):
        dict(data)
Run Code Online (Sandbox Code Playgroud)

我认为他们是一样的.

sth*_*sth 5

dict(data)只需创建一个字典data而不保存结果.super(SortedDict, self).__init__(data)另一方面调用父类构造函数.

此外,在多重继承的情况下,使用super确保以正确的顺序调用所有正确的构造函数.使用None默认参数而不是mutable {}可确保其他构造函数不会意外地修改SortedDicts default参数.