Python系列8——類和對象(2)

寫在前面

類的這個概念在顯示生活中很容易找到生動的例子。

比如說,在數學中,數字分爲整數、小數、複數這三種類型。不同類型的數據運算方法是不同的。這與計算機中的基本類型是很相似的。因此,不要把類想的遙不可及,歸根結底類就是對一類具有相同屬性和行爲的對象進行分類的結果

在面向對象編程時,這種概念便被借用了。我們可以通過類,定義我們自己的數據類型,並賦予其相應的屬性和方法。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age =age
    
    def work(self):
        print(self.name, 'working')

    def walk(self):
        print(self.name, 'walking')


xiaoMing = Person('小明', 20)
xiaoFang = Person('小芳', 22)

xiaoMing.work()
xiaoFang.work()

但是我們會遇到這樣的問題。當我們用xiaoMing.work()的時候,Python是怎麼知道是xiaoMing在調用呢?關鍵點就在於self。xiaoMing調用時,將xiaoMing這個的地址賦值給了self,那麼self便指向了當前調用對象。同樣地,對於xiaoFang來講也是同樣的道理。因此,我們得出結論:Python中的self在調用過程中指向當前調用對象。

多態是減少代碼重複性和明晰程序邏輯的非常有用的方法。一般情況下,實現多態的方法有兩種,override(重寫)和overload(重載)。

多態
Python Python中沒有重載overload,因爲python中的函數形參個數是變化的。 Python中的override,在繼承中子類的方法可以覆蓋父類的方法
C++ C++中有重載,重載函數的函數名相同,函數形參的個數或類型不同 C++中通過虛函數(虛表)來實現override
Java Java中有重載,與C++相同 Java中override,與Python中的重寫相同。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章