Day7 子类调用父类的方法supper 绑定方法与非绑定方法
生活随笔
收集整理的這篇文章主要介紹了
Day7 子类调用父类的方法supper 绑定方法与非绑定方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
supper:可以利用supper來重用父類的方法,可以不用指名道姓的調用了。
1 class OldboyPeople: 2 school = 'oldboy' 3 def __init__(self,name,age,sex): 4 self.name=name 5 self.age=age 6 self.sex=sex 7 8 def eat(self): 9 print('is eating') 10 def teach(self): 11 print('這是父類的teach') 12 13 class OldboyTeacher(OldboyPeople): 14 def __init__(self,name,age,sex,salary,title): 15 # OldboyPeople.__init__(self,name,age,sex) 16 #在Python2中需要寫全:super(OldboyTeacher,self) 17 supper()可以得到一個對象,是專門訪問父類的,是子類重用父類的方法 18 super().__init__(name,age,sex) 19 self.salary=salary 20 self.title=title 21 22 def teach(self): 23 # OldboyPeople.teach(self) 24 super().teach() 25 print('%s is teaching' %self.name) 26 print(OldboyTeacher.mro()) 27 28 egon_obj=OldboyTeacher('egon',18,'male',3.1,'沙河霸道金牌講師') 29 # print(egon_obj.title) 30 # print(egon_obj.__dict__) 31 egon_obj.teach()supper:supper是依賴于繼承的。
?
?
class A:def test(self):super().test()class B:def test(self):print('B')class C(A,B):pass# a=A() # a.test()print(C.mro()) c=C() c.test()
C繼承了A和B,
先打印C的執行順序列表,如果表里邊有,然后再去按順序向后檢索。如果表里邊沒有,報錯。
?
?
?
綁定方法與非綁定方法:
綁定到類的方法:
例如定義了一個類,然后從配置文件中讀取配置參數。
1 import settings #定義了一個settings的文件,文件里邊存儲了兩行配置信息,主機名和端口 2 3 class MySql: 4 def __init__(self,host,port): 5 self.host=host 6 self.port=port 7 8 @classmethod #不加這個參數,定義的是綁定給函數,加上這個參數,定義的是綁定給類。 9 def from_conf(cls): 10 print(cls) 11 # return cls(settings.HOST,settings.PORT) 12 13 def func1(self):pass 14 15 16 conn1=MySql('127.0.0.1',3306) 17 18 # print(MySql.from_conf) 19 # conn2=MySql.from_conf() 20 21 # print(conn1.host,conn2.host) 22 23 # print(conn1.func1) 24 # print(conn1.from_conf) 25 # print(MySql.from_conf) 26 27 28 # conn1.from_conf() 29 # MySql.from_conf()?
?
非綁定方法:
產生一個不相關的值,與任意綁定都不存在。
1 import uuid 2 class MySql: 3 def __init__(self,host,port): 4 self.host=host 5 self.port=port 6 self.id=self.create_id() 7 8 # @classmethod 9 # def from_conf(cls): #綁定給類的 10 # print(cls) 11 # # return cls(settings.HOST,settings.PORT) 12 # 13 # def func1(self): #綁定給對象的 14 # pass 15 16 @staticmethod 17 def create_id(): #非綁定方法 18 return str(uuid.uuid1()) 19 20 21 conn1=MySql('127.0.0.1',3306) 22 conn2=MySql('127.0.0.2',3306) 23 conn3=MySql('127.0.0.3',3306) 24 # print(MySql.create_id) 25 # print(conn1.create_id) 26 27 print(conn1.id,conn2.id,conn3.id)?
轉載于:https://www.cnblogs.com/sexiaoshuai/p/7374557.html
總結
以上是生活随笔為你收集整理的Day7 子类调用父类的方法supper 绑定方法与非绑定方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解锁区块链的创业密码
- 下一篇: win7禁用Adnimistrator账