python類繼承與重構
阿新 • • 發佈:2018-06-14
方法重寫 把他 名稱 count 前綴 派生類 數據結構 instance 指向
python類繼承與重構
0 對象
- 通過類定義的數據結構實例。
- 對象包括兩個數據成員(類變量和實例變量)和方法。
#!/usr/bin/python # -*- coding: UTF-8 -*- class Employee: ‘所有員工的基類‘ empCount = 0 def __init__(self, name, salary): self.name = name self.salary = salary Employee.empCount += 1 def displayCount(self): print "Total Employee %d" % Employee.empCount def displayEmployee(self): print "Name : ", self.name, ", Salary: ", self.salary
- empCount 變量是一個類變量,它的值將在這個類的所有實例之間共享。你可以在內部類或外部類使用 Employee.empCount 訪問。
- 第一種方法__init__()方法是一種特殊的方法,被稱為類的構造函數或初始化方法,當創建了這個類的實例時就會調用該方法
- self 代表類的實例,self 在定義類的方法時是必須有的,雖然在調用時不必傳入相應的參數
self代表類的實例,而非類
- 類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是 self。
class Test: def prt(self): print(self) print(self.__class__) t = Test() t.prt()
以上實例執行結果為:
<__main__.Test instance at 0x10d066878>
__main__.Test
- 從執行結果可以很明顯的看出,self 代表的是類的實例,代表當前對象的地址,而 self.class 則指向類。
self 不是 python 關鍵字,我們把他換成 runoob 也是可以正常執行的:
你可以添加,刪除,修改類的屬性。
類的繼承
- 在python中繼承中的一些特點:
- 在繼承中基類的構造(init()方法)不會被自動調用,它需要在其派生類的構造中親自專門調用。
- 在調用基類的方法時,需要加上基類的類名前綴,且需要帶上self參數變量。區別在於類中調用普通函數時並不需要帶上self參數
- Python總是首先查找對應類型的方法,如果它不能在派生類中找到對應的方法,它才開始到基類中逐個查找。(先在本類中查找調用的方法,找不到才去基類中找)。
1 方法重寫
- 如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
python類繼承與重構