经典类与新式类的继承顺序

Posted zhong2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典类与新式类的继承顺序相关的知识,希望对你有一定的参考价值。

 1 #经典类与新式类的继承顺序
 2 
 3 class Teacher(object):
 4     cn=Harvard
 5     def __init__(self,name,age,sex):
 6         self.name=name
 7         self.age=age
 8         self.sex=sex
 9         self.__money=5600
10 
11     def show_private_attribule(self):
12         print(private attribute:%s %self.__money)
13 
14 class Master(Teacher):
15     def __init__(self,name,age,sex,subject):
16         Teacher.__init__(self,name,age,sex)#重构父类的构造函数,继承多个就多写一个
17         #super(Master,self).__init__(name,age,sex) #通用写法,继承多个父类都可以用这一个
18                                                 #继承多个类,只运行第一个类的构造函数,其它的不运行
19                                                 #没有,横向逐个找,向上找(查找策略:广度优先 )(新式类)
20                                                 #python2.x是深度优先 (经典类)
21         self.subject=subject
22         print(in the Master)
23 
24     def speak(self):
25         print(I am master %s I study %s subject %(self.name,self.subject))
26 
27 class Doctor(Teacher):
28     def __init__(self,name,age,sex,allowance):
29         Teacher.__init__(self, name, age, sex)
30         #super(Doctor,self).__init__(name,age,sex)
31         self.allowance=allowance
32         print(in the Doctor)
33 
34     def ralation(self,obj):
35         print(%s is %s \‘s student %(obj.name,self.name))
36 
37 class Specialist(Master,Doctor):
38     def __init__(self,name,age,sex,subject,allowance,research_field):#先查找Master构造执行,没有向Doctor查找,再没有向上Teacher查找
39         Master.__init__(self,name,age,sex,subject)
40         Doctor.__init__(self,name,age,sex,allowance)
41         self.research_field=research_field
42         print(in the Specialist)
43 
44 t1=Teacher(Jack,26,M)
45 m1=Master(Alice,22,F,French)
46 d1=Doctor(Monica,28,F,6600)
47 s1=Specialist(Jones,32,F,French,6600,language)

 

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

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

新式类与经典类的比较

继承派生新式类与经典类

python新式类与旧式类

多继承c3算法与网路编程

继承1.继承,2.属性查找顺序3.子类访问父类内容4.补充,经典类与新式类 --------- # 21