python------面向对象介绍之经典类与新式类的继承顺序
一. 经典类与新式类的继承顺序
1 class A:
2 def __init__(self):
3 print("A")
4
5 class B(A):
6 def __init__(self):
7 print("B")
8
9 class C(A):
10 def __init__(self):
11 print("C")
12
13 class D(B,C):
14 pass
15
16 obj = D()
注:python2.x 经典类是按深度优先来继承的,新式类是按广度优先来继承的;
python3.x 经典类和新式类都是按广度优先继承的。
二. 继承实例
1 """继承实例""" 2 class School(object): 3 def __init__(self,name,addr): 4 self.name = name 5 self.addr = addr 6 self.students = [] 7 self.staffs = [] 8 9 def enroll(self,stu_obj): 10 print("为学员%s 办理注册手续"% stu_obj) 11 self.students.append(stu_obj) 12 def hire(self,staff_obj): 13 print("雇佣新员工 %s" % staff_obj) 14 self.staffs.append(staff_obj) 15 16 17 18 19 class SchoolMember(object): 20 def __init__(self,name,age,sex): 21 self.name = name 22 self.age = age 23 self.sex = sex 24 def tell(self): 25 pass 26 27 class Teacher(SchoolMember): 28 def __init__(self,name,age,sex,salary,course): 29 super(Teacher,self).__init__(name,age,sex) 30 self.salary = salary 31 self.course = course 32 def tell(self): 33 print(''' 34 ------info of Teacher : %s---- 35 Name :%s 36 Age :%s 37 Sex :%s 38 Salary :%s 39 Course :%s 40 '''%(self.name,self.name,self.age,self.sex,self.salary,self.course)) 41 42 def teach(self): 43 print("%s is teaching course[%s]" %(self.name,self.course)) 44 45 class Student(SchoolMember): 46 def __init__(self,name,age,sex,stu_id,grade): 47 super(Student,self).__init__(name,age,sex) 48 self.stu_id = stu_id 49 self.grade = grade 50 def tell(self): 51 print(''' 52 ------info of Student : %s---- 53 Name :%s 54 Age :%s 55 Sex :%s 56 Stu_id :%s 57 Grade :%s 58 ''' % (self.name, self.name, self.age, self.sex, self.stu_id, self.grade)) 59 def pay_tuition(self,amount): 60 print("%s has paid tution for $%s" %(self.name,amount)) 61 62 school = School("天字一号","外太空") 63 64 t1 = Teacher("xiaolaizi",20,"m",20000,"english") 65 t2 = Teacher("zhangsan",18,"m",200,"chinese") 66 67 s1 = Student("lisi",10,"f",110119,"python") 68 s2 = Student("wangmaiz",8,"f",110118,"C++") 69 70 t1.tell() 71 s1.tell() 72 school.hire(t1) 73 school.enroll(s1) 74 75 print(school.students) 76 print(school.staffs) 77 school.staffs[0].teach() 78 79 for stu in school.students: 80 stu.pay_tuition(3000)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了