1. 程式人生 > >python中類的繼承與方法重寫

python中類的繼承與方法重寫

在python中繼承中的一些特點:
1:在繼承中基類的構造(init()方法)不會被自動呼叫,它需要在其派生類的構造中親自專門呼叫。
2:在呼叫基類的方法時,需要加上基類的類名字首,且需要帶上self引數變數。區別於在類中呼叫普通函式時並不需要帶上self引數
3:Python總是首先查詢對應型別的方法,如果它不能在派生類(子類即當前類)中找到對應的方法,它才開始到基類(父類)中逐個查詢。(先在本類中查詢呼叫的方法,找不到才去基類中找)。
4:由上面的關係,可以進行方法的重寫,在子類中重寫父類方法。

如果在繼承元組中列了一個以上的類,那麼它就被稱作”多重繼承” 。

語法:
派生類的宣告,與他們的父類類似,繼承的基類列表跟在類名之後,如下所示:
父類以元組的形式存在:

class SubClassName (ParentClass1[, ParentClass2, ...]):
   'Optional class documentation string'
   class_suite

例項:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

class Parent:        
    "父類"
    parentAttr = 100
    def __init__(self):
        print "呼叫父類建構函式"


    def parentMethod(self):
        print
'呼叫父類方法' def setAttr(self, attr): Parent.parentAttr = attr def getAttr(self): print "父類屬性 :", Parent.parentAttr class Child(Parent): "定義子類" def __init__(self): print "呼叫子類構造方法" def childMethod(self): print '呼叫子類方法 child method' #在子類中呼叫父類方法
print Parent.getAttr(self) c = Child() # 例項化子類 c.childMethod() # 呼叫子類的方法 c.parentMethod() # 呼叫父類方法 c.setAttr(200) # 再次呼叫父類的方法 c.getAttr() # 再次呼叫父類的方法

檢測類之間的父子關係:

issubclass() - 布林函式(zi,fu)判斷一個類是另一個類的子類或者子孫類,語法:issubclass(sub,sup)
isinstance(obj, Class) 布林函式如果obj是Class類的例項物件或者是一個Class子類的例項物件則返回true。