1. 子类没有初始化函数, 则初始化子类的时候, 需要有父类的初始化参数
- Class P(object):
- def __init__(self,name):
- self.name = name
- print(self.name)
- Class C(P):
- pass
c = C('my name is c') --> 一定要有父类的初始化函数, 否则会出错
2. 子类有自己的初始化函数, 并且子类没有显式的调用父类的初始化函数的时候, 初始化的时候, 子类不需要带父类的初始化参数, 子类不会有父类的初始化参数
- Class P(object):
- def __init__(self,name):
- self.name = name
- print(self.name)
- Class C(P):
- def __init__(self):
- self.name = 'I'm child'
- print(self.name)
c = C() --> 初始化没有问题
3. 子类有自己的初始化函数, 且子类显式的调用父类的初始化函数的时候, 初始化的时候, 子类不需要带父类的初始化函数, 但子类在调用父类的初始化函数的时候需要有父类的参数
- Class P(object):
- def __init__(self,name):
- self.name = name
- print(self.name)
- Class C(P):
- def __init__(self):
super(C,self).__init__('aaa') --> 父类的参数, 此句类似于 P.__init__(self,'aaa'), 当在子类中需要调用父类的属性或者方法时候, 可以通过父类名直接访问父类的属性, 当调用父类的方法是, 需要将 "self" 显示的传递进去, 这种方式有一个不好的地方就是, 需要经父类名硬编码到子类中, 为了解决这个问题, 可以使用 Python 中的 super 关键字
self.t = 'I'm child'
c = C() --> 初始化没有问题
c.name --> 也有参数
来源: http://www.bubuko.com/infodetail-2684770.html