setattr 真的是非常尴尬,因为遇到“.”操作就会调用之,导致setattr里有“.”就调用自身,这真是……但是也不完全这样,自带的方法/属性(python内置若干__xxx__方法/属性)会跳过setattr,也就是说setattr里只能用自带的“.”操作
super作用于一个对象,返回【其类的父类的一个对象】。python的一大特色就是self写在里外是一样的,但是不能缺。__init__( ) 函数是在对象创建后调用的,一个便于理解的方式是,如果创建一个对象,在此之后__init__() 仍然可以被调用,比如 p 已经被创建(假设初始化要x,y两个参数),依然可以用 p.__init__(x,y) 来再次初始化。定义__init__(self, x, y)中的self匹配p 。有趣的是,python的鸭子类型使得A类对象可以引用B类的__init__(),self照样匹配,自然子类可以调用父类的__init__(),这就是不用再写一遍self的原因。
super是初始化子类的时候调用父类super