1. 子类没有初始化函数, 则初始化子类的时候,须要有父类的初始化参数函数
Class P(object):编码
def __init__(self,name):.net
self.name = nameblog
print(self.name)it
Class C(P):object
pass方法
c = C('my name is c') -->必定要有父类的初始化函数,不然会出错ps
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 -->也有参数
原文出处:
https://blog.csdn.net/brucewong0516/article/details/79121179