目录
1.1 派生方法一(类调用)
1.2 派生方法二(super)
python从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129328397?spm=1001.2014.3001.5502
1.1 派生方法一(类调用)
- 指名道姓访问某一个类的函数:该方式与继承无关
class OldboyPeople:"""由于学生和老师都是人,因此人都有姓名、年龄、性别"""school = 'oldboy'def __init__(self, name, age, gender):self.name = nameself.age = ageself.gender = genderclass 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 = numstu1 = 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}
1.2 派生方法二(super)
- 严格以来继承属性查找关系
- super()会得到一个特殊的对象,该对象就是专门用来访问父类中的属性的(按照继承的关系)
- super().__init__(不用为self传值)
- super的完整用法是super(自己的类名,self),在python2中需要写完整,而python3中可以简写为super()
class OldboyPeople:school = 'oldboy'def __init__(self, name, age, sex):self.name = nameself.age = ageself.sex = sexclass 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_iddef 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}