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
從執行結果可以很明顯的看出,self 代表的是類的例項,代表當前物件的位址,而 self.class 則指向類。
self 不是 python 關鍵字,我們把他換成 runoob 也是可以正常執行的:
你可以新增,刪除,修改類的屬性。
類的繼承
在python中繼承中的一些特點:
在繼承中基類的構造(init()方法)不會被自動呼叫,它需要在其派生類的構造中親自專門呼叫。
在呼叫基類的方法時,需要加上基類的類名字首,且需要帶上self引數變數。區別在於類中呼叫普通函式時並不需要帶上self引數
python總是首先查詢對應型別的方法,如果它不能在派生類中找到對應的方法,它才開始到基類中逐個查詢。(先在本類中查詢呼叫的方法,找不到才去基類中找)。
1 方法重寫
如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
類的繼承重難點
繼承許可權 不同的繼承方式會影響基類成員在派生類中的訪問許可權。public繼承方式 基類中所有 public 成員在派生類中為 public 屬性 基類中所有 protected 成員在派生類中為 protected 屬性 基類中所有 private 成員在派生類中不能使用。protected繼承...
python類繼承與重構
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 disp...
2 python 繼承 重寫父類的方法
定義父類 class a 定義父類的構造方法 def init self self.a aaaa 定義父類的公有方法public def public selfs print publi method of a 定義子類b,繼承了父類a class b a 定義子類的構造方法 def init se...