0
class Dict(dict):

    def __init__(self, **kw):
        super().__init__(**kw)

    def __getattr__(self, key):
        try:
            return self[key]
        except KeyError:
            raise AttributeError(r"'Dict' object has no attribute '%s'" % key)

    def __setattr__(self, key, value):
        self[key] = value
        
#代码来自廖雪峰的官网教程:https://www.liaoxuefeng.com/        

初学编程,小白提出以下问题:
这里的Dict class创建时不是已经继承了dict的初始化方法了吗?
如果是,写成super().__init__(**kw)的作用是什么?

#尝试注释了Dict的__init__函数,并测试以下代码,结果一样
a = Dict(c=1)        
print (a)
d = Dict(city = 'Beijing')
print (d)
d.abc = 1      
print (d.abc) 
print (d)

提问时可能表达不清楚,应该描述为:'定义__init__(self, **kw):函数是否有实质意义'。roman_timeout 最先看出我想表达的问题,并提出意见。其他两位也给了我很多帮助,无奈只能采纳一个答案。作为小白声望也不足点赞,但还是谢谢大家!

查看全部 3 个回答

0

已采纳

这是一个非常不好的习惯。绝对不要为了只是单纯的继承而覆盖特殊方法。这是没有意义的。