好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

python子类重写 __init__方法注意的地方

 __init__方法:构造方法,在对象初始化的时候调用,一般初始化时绑定一些对象上的属性
如果父类中定义了__init__方法
如果子类中没有定义__init__方法,那么子类在初始化时会调用父类的__init__方法,所以子类在初始化对象时要和父类初始化对象一样要传参,否则报错
如果子类中也要定义自己的__init__方法,那么子类的__init__方法一定要在定义时定义和父类同样的形参,或者用*args,**kwargs
然后还要显式调用父类的__init__方法:super().__init__(形参..)或者父类名.__init__(self,形参..),这样子类同时拥有了父类中的__init__中的属性,也拥有了自己
定义的__init__方法中的属性,你可以使用父类中的__init__方法中的属性,特别是父类中的方法一般都会用到__init__中定义的属性,如果你不调用父类的__init_方法,那么在调用父类
的方法时会报错

原理就是子类继承了父类,子类就拥有了父类的所有属性和方法,除了不能继承父类的私有属性和方法,如果子类定义了和父类相同的方法或属性,这叫做重写
那么执行子类的这个同名方法时,就会调用子类的方法或属性,不会自动调用父类的同名方法,如果还要在子类中调用父类的同名
方法,通过显示调用父类的方法,父类名.同名方法(self,形参...), 不要使用super().同名方法(形参...),因为它会按照mro属性中的顺序来调用父类的方法 

查看更多关于python子类重写 __init__方法注意的地方的详细内容...

  阅读:42次