python類與物件的組合與繼承
1、把類的物件例項化放到一個新的類裡面叫做類的組合,組合就是指幾個橫向關係的類放在一起,縱向關係的類放在一起是繼承,根據實際應用場景確定。簡單的說,組合用於“有一個”的場景中,繼承用於“是一個”的場景中。例如,水池裡有一個烏龜,天上有一個鳥,地上有一個小甲魚,這些適合使用組合。青瓜是瓜,女人是人,鯊魚是魚,這些就應該使用繼承啦例項如下:
class Turtle:
def __init__(self,x):
self.num = x
class Fish:
def __init__(self,x):
self.num = x
class Pool:
def __init__(self, x, y):
self.turtle = Turtle(x)
self.fish = Fish(y)
def print_num(self):
print("水池總共有烏龜 %d 只,小魚 %d 只" % (self.turtle.num,self.fish.num))
pool = Pool(1,10)
pool.print_num()
2、類、類物件和例項物件
當你這個類定義完的時候,類定義就變成類物件,可以直接通過“類名.屬性”或者“類名.方法名()”引用或使用相關的屬性或方法。
3、對於類的應用,我們一般不要試圖定義出類的所有特性和方法,應該利用繼承和組合的機制來進行擴充套件,另外,我們還可以利用不同的詞性來進行命名,對於屬性一般是用名詞,對於方法名一般用動詞。
4、繫結
Python嚴格要求方法需要有例項才可以被呼叫,這種限制其實就是python所謂的繫結。
5、在一個類中定義一個變數,用於跟蹤該類有多少個例項被建立
實現程式碼如下:
class C:
count = 0
def __init__(self):
C.count += 1
def __del__(self):
C.count -= 1
6、定義一個棧(Stack)類,用於模擬一種具有後進先出(LIFO)特性的資料結構。至少需要有以下方法:
方法名 |
含義 |
isEmpty() |
判斷當前棧是否為空(返回 True 或 False) |
push() |
往棧的頂部壓入一個數據項 |
pop() |
從棧頂彈出一個數據項(並在棧中刪除) |
top() |
顯示當前棧頂的一個數據項 |
bottom() |
顯示當前棧底的一個數據項 |
實現程式碼如下:
class Stack:
def __init__(self):
self.stack = []
def Isempty(self):
if len(self.stack) == 0:
self.Isempty1=True
print(self.Isempty1)
else:
self.Isempty1 = False
print(self.Isempty1)
def push(self,x):
self.stack.append(x)
def pop(self,y):
if len(self.stack) == 0:
print("我為空的,不能夠彈出")
else:
self.stack.pop(y)
def top(self):
if len(self.stack) == 0:
print("我為空的,不能夠彈出")
else:
print(self.stack[len(self.stack)-1])
def bottom(self):
if len(self.stack) == 0:
print("我為空的,不能夠彈出")
else:
print(self.stack[0])
a = Stack()
a.Isempty()
a.pop(2)
a.push(3)
a.push(4)
a.push(5)
a.top()
a.bottom()