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、在一個類中定義一個變量,用於跟蹤該類有多少個實例被創建(當實例化一個對象,這個變量+1,當銷毀一個對象,這個變量自動-1):

實現代碼如下:

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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM