日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python3 类和继承和组合

發(fā)布時間:2025/7/25 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python3 类和继承和组合 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 import random as r 2 3 class Fish: 4 def __init__(self): 5 self.x = r.randint(0,10) 6 self.y = r.randint(0,10) 7 8 def move(self): 9 self.x -= 1 10 print('我的位置是:%s - %s'%(self.x, self.y)) 11 12 class GoldFish(Fish): 13 pass 14 15 class Shark(Fish): 16 def __init__(self): 17 #Fish.__init__(self) 18 super().__init__() 19 #super不需要給出基類/父類的名字,如果有多重繼承, 20 #則只需要修改引用時的父類名稱,不需要每次都修改全部被繼承的方法 21 self.hungry = True 22 23 def eat(self): 24 if self.hungry: 25 print('Eat it up') 26 self.hungry = False 27 else: 28 print('Full')

注意如果子類Shark()引用父類Fish()時,如果不使用super()函數(shù),則Shark()子類產生的對象時沒法調用move()方法的,因為不存在x,y參數(shù)

使用super()函數(shù),則可以move(),而且只需要指出父類的方法,不需要self。

如果有多重繼承,則只需要修改Shark(Fish)中的Fish名稱,不需要修改super()函數(shù)內的方法名,super()函數(shù)會自動找到父類的方法。

“super函數(shù)超級之處在于你不需要明確給出任何基類的名字,它會自動幫你找出所有積累以及對應的方法。由于不用給出基類的名字,這就意味著你如果改變了類繼承關系,只要改變class語句里的父類即可,而不必在代碼中修改所有被繼承的方法”

?

另一個例子:

1 class A(): 2 def __init__(self): 3 print('進入A') 4 print('離開A') 5 6 class B(A): 7 def __init__(self): 8 print('進入B') 9 #A.__init__(self) 10 super().__init__() 11 print('離開B') 12 13 class C(A): 14 def __init__(self): 15 print('進入C') 16 #A.__init__(self) 17 #super().__init__() 18 print('離開C') 19 20 class D(B,C): 21 def __init__(self): 22 print('進入D') 23 #B.__init__(self) 24 #C.__init__(self) 25 super().__init__() 26 print('離開D') 27 28

d=D()會出現(xiàn)什么呢?

?

##############################

組合:

1 class Turtle: 2 def __init__(self,x): 3 self.num = x 4 5 class Fish: 6 def __init__(self,x): 7 self.num = x 8 9 class Pool: 10 def __init__(self, x, y): 11 self.turtle = Turtle(x) 12 self.fish = Fish(y) 13 def print_num(self): 14 print('水池里共有%d只烏龜,%d只魚'%(self.turtle.num, self.fish.num)) 15 #這就是組合,把一個類的對象,放到另一個類里引用 16 #這不是繼承,是組合 View Code

?把沒有關系的類進行組合,可以避免繼承的一些問題

##############################

mixin:

https://fishc.com.cn/thread-48888-1-1.html

?

轉載于:https://www.cnblogs.com/vigossr/p/10194425.html

總結

以上是生活随笔為你收集整理的Python3 类和继承和组合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。