面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是通過繼承機制。繼承完全可以理解成類之間的類型和子類型關系。
需要注意的地方:繼承語法 class 派生類名(基類名)://… 基類名寫在括號裡,基本類是在類定義的時候,在元組之中指明的。
在python中繼承中的一些特點:
1:在繼承中基類的構造(init()方法)不會被自動調用,它需要在其派生類的構造中親自專門調用。
2:在調用基類的方法時,需要加上基類的類名前綴,且需要帶上self參數變量。區別在於類中調用普通函數時並不需要帶上self參數
3:Python總是首先查找對應類型的方法,如果它不能在派生類中找到對應的方法,它才開始到基類中逐個查找。(先在本類中查找調用的方法,找不到才去基類中找)。
如果在繼承元組中列了一個以上的類,那麼它就被稱作”多重繼承” 。
語法:
派生類的聲明,與他們的父類類似,繼承的基類列表跟在類名之後,如下所示:
class SubClassName (ParentClass1[, ParentClass2, ...]):
class Parent:
number = 100
def __init__(self):
print "Invoke parent constructor method"
def parentMethod(self):
print 'Invoke parent method'
def setNumber(self, num):
self.number = num
def getNumber(self):
print "Parent's number :", self.number
class Child(Parent):
def __init__(self):
print "Invoke child constructor method"
def childMethod(self):
print 'Invoke child method'
c = Child()
c.childMethod()
c.parentMethod()
c.setNumber(200)
c.getNumber()
運行結果:
Invoke child constructor method
Invoke child method
Invoke parent method
Parent’s number 200
python支持多繼承:
class A: # 定義類 A
.....
class B: # 定義類 B
.....
class C(A, B): # 繼承類 A 和 B
與類相關的兩個方法:
issubclass() -判斷一個類是另一個類的子類或者子孫類,語法:issubclass(sub,sup)
isinstance(obj, Class) 如果obj是Class類的實例對象或者是一個Class子類的實例對象則返回true,否則返回false。
更多內容請關注微信公眾號