python------面向对象介绍之经典类与新式类的继承顺序

Posted 百里屠苏top

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于python------面向对象介绍之经典类与新式类的继承顺序的主要内容,如果未能解决你的问题,请参考以下文章

python之新式类与经典类

python—面向对象设计

python 高级之面向对象初级

面向对象进阶

面向对象之继承

python 面向对象的三大特征之 继承