Python3 类和继承和组合
生活随笔
收集整理的這篇文章主要介紹了
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 28d=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 类和继承和组合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10设置默认打开方式
- 下一篇: Django (auth模块、User对