一、派生
派生:子类中新定义的属性的这个过程叫做派生,并且需要记住子类在使用派生的属性时始终以自己的为准
1 派生方法一(类调用)
指名道姓访问某一个类的函数:该方式与继承无关
class OldboyPeople:
\"\"\"由于学生和老师都是人,因此人都有姓名、年龄、性别\"\"\"
school = \'oldboy\'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
class OldboyStudent(OldboyPeople):
\"\"\"由于学生类没有独自的__init__()方法,因此不需要声明继承父类的__init__()方法,会自动继承\"\"\"
def choose_course(self):
print(\'%s is choosing course\' % self.name)
class OldboyTeacher(OldboyPeople):
\"\"\"由于老师类有独自的__init__()方法,因此需要声明继承父类的__init__()\"\"\"
def __init__(self, name, age, gender, level):
OldboyPeople.__init__(self, name, age, gender)
self.level = level # 派生
def score(self, stu_obj, num):
print(\'%s is scoring\' % self.name)
stu_obj.score = num
stu1 = OldboyStudent(\'tank\', 18, \'male\')
tea1 = OldboyTeacher(\'nick\', 18, \'male\', 10)
print(stu1.__dict__)
{\'name\': \'tank\', \'age\': 18, \'gender\': \'male\'}
print(tea1.__dict__)
{\'name\': \'nick\', \'age\': 18, \'gender\': \'male\', \'level\': 10}
2 派生方法二(super)
- 严格以来继承属性查找关系
- super()会得到一个特殊的对象,该对象就是专门用来访问父类中的属性的(按照继承的关系)
- super().
__init__
(不用为self传值) - super的完整用法是super(自己的类名,self),在python2中需要写完整,而python3中可以简写为super()
class OldboyPeople:
school = \'oldboy\'
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
class OldboyStudent(OldboyPeople):
def __init__(self, name, age, sex, stu_id):
# OldboyPeople.__init__(self,name,age,sex)
# super(OldboyStudent, self).__init__(name, age, sex)
super().__init__(name, age, sex)
self.stu_id = stu_id
def choose_course(self):
print(\'%s is choosing course\' % self.name)
stu1 = OldboyStudent(\'tank\', 19, \'male\', 1)
print(stu1.__dict__)
{\'name\': \'tank\', \'age\': 19, \'sex\': \'male\', \'stu_id\': 1}
来源:https://www.cnblogs.com/xxpythonxx/p/17168779.html
本站部分图文来源于网络,如有侵权请联系删除。