经典类与新式类的继承顺序
生活随笔
收集整理的這篇文章主要介紹了
经典类与新式类的继承顺序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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')
?
轉載于:https://www.cnblogs.com/zhong2018/p/9004686.html
總結
以上是生活随笔為你收集整理的经典类与新式类的继承顺序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax语法
- 下一篇: BZOJ.1032.[JSOI2007]