super().init()方法是当我们需要继承父类构造函数中的内容,并且子类需要有所补充的时候使用。例如
class Person(object):
"""人"""
def __init__(self, name, age):
self._name = name
self._age = age
当我们需要创建一个学生的子类时,需要继承父类中的name,和age,同时也要新增grade时,在子类中我们就可以使用super().init()方法。具体为
class Student(Person):
"""学生"""
def __init__(self, name, age, grade):
super().__init__(name, age)
self._grade = grade
可以理解为super().init()方法调用父类中的__init__(),所以先得将父类中的两个元素传入。
部分源码如下(源码来自GitHub)
class Person(object):
"""人"""
def __init__(self, name, age):
self._name = name
self._age = age
@property
def name(self):
return self._name
@property
def age(self):
return self._age
@age.setter
def age(self, age):
self._age = age
def play(self):
print('%s正在愉快的玩耍.' % self._name)
def watch_av(self):
if self._age >= 18:
print('%s正在观看爱情动作片.' % self._name)
else:
print('%s只能观看《熊出没》.' % self._name)
class Student(Person):
"""学生"""
def __init__(self, name, age, grade):
super().__init__(name, age)
self._grade = grade
@property
def grade(self):
return self._grade
@grade.setter
def grade(self, grade):
self._grade = grade
def study(self, course):
print('%s的%s正在学习%s.' % (self._grade, self._name, course))