当需要继承父类构造函数__init__中的内容,且父类中的参数没有默认值时,使用super().init()方法初始化父类参数
在这段代码中,New_person这个类即需要用到父类中name和age,又需要新增sex这个参数。这时就需要用到super().init()来继承父类中的name,和age。super().init()其实就是一个调用父类中__init__的函数。由于父类中的init有两个参数,所以super().init()也要传两个参数。
通过子类中的__init__函数获取到传的参数,并传给父类。
class Person():
def __init__(self,name,age):
self.name=name
self.age=age
def name1(self,name): #定义方法名时不要和变量名一样,否则在调用的时候可能会报错。
print('方法中名字 %s'%name)
print('类中的名字 %s'%self.name)
def age1(self,age):
print('方法中的年龄 %s' %age)
print('类中的年龄 %s' %self.age)
class New_person(Person):
def __init__(self,new_name,new_age,sex):
super().__init__(new_name,new_age)
self.sex=sex
def diaoyong(self,name,age):
self.name1(name)
self.age1(age)
def sex1(self,sex):
print('方法中的性别 %s' %sex)
print('类中的性别 %s' %self.sex)
new_p=New_person('小绿','20','男')
new_p.diaoyong('小红','15')
new_p.sex1('女')
# 输出结果
方法中名字 小红
父类中的名字 小绿
方法中的年龄 15
父类中的年龄 20
方法中的性别 女
子类中的性别 男
当父类中的参数带有默认值时,super().init()调用父类中__init__也可以不传值,
class Person():
def __init__(self,name = '小绿',age = '20'):
self.name=name
self.age=age
def name1(self,name): #定义方法名时不要和变量名一样,否则在调用的时候可能会报错。
print('方法中名字 %s'%name)
print('类中的名字 %s'%self.name)
def age1(self,age):
print('方法中的年龄 %s' %age)
print('类中的年龄 %s' %self.age)
class New_person(Person):
def __init__(self,sex):
super().__init__()
self.sex=sex
def diaoyong(self,name,age):
self.name1(name)
self.age1(age)
def sex1(self,sex):
print('方法中的性别 %s' %sex)
print('类中的性别 %s' %self.sex)
new_p=New_person('男')
new_p.diaoyong('小红','15')
new_p.sex1('女')
# 输出结果
方法中名字 小红
类中的名字 小绿
方法中的年龄 15
类中的年龄 20
方法中的性别 女
类中的性别 男
如果直接在子类重写了所需的父类参数,把super().init()这句代码去掉也可以。
class Person():
def __init__(self,name = '小绿',age = '20'):
self.name=name
self.age=age
def name1(self,name): #定义方法名时不要和变量名一样,否则在调用的时候可能会报错。
print('方法中名字 %s'%name)
print('类中的名字 %s'%self.name)
def age1(self,age):
print('方法中的年龄 %s' %age)
print('类中的年龄 %s' %self.age)
class New_person(Person):
def __init__(self,sex):
# super().__init__()
self.name = '小绿'
self.age = '20'
self.sex=sex
def diaoyong(self,name,age):
self.name1(name)
self.age1(age)
def sex1(self,sex):
print('方法中的性别 %s' %sex)
print('类中的性别 %s' %self.sex)
new_p=New_person('男')
new_p.diaoyong('小红','15')
new_p.sex1('女')
#输出结果
方法中名字 小红
类中的名字 小绿
方法中的年龄 15
类中的年龄 20
方法中的性别 女
类中的性别 男