python的抽象類實戰 python 模擬抽象類

2021-10-19 21:43:41 字數 1658 閱讀 9812

繼承是物件導向的重要特徵之一,繼承是兩個類或者多個類之間的父子關係,子程序繼承了父程序的所有公有例項變數和方法。繼承實現了**的重用。重用已經存在的資料和行為,減少**的重新編寫,python在類名後用一對圓括號表示繼承關係, 括號中的類表示父類,如果父類定義了__init__方法,則子類必須顯示地呼叫父類的__init__方法,如果子類需要擴充套件父類的行為,可以新增__init__方法的引數。

下面演示繼承的實現

class fruit:

def __init__(self, color):

self.color = color

print "fruit's color: %s" %self.color

def grow(self):

print "grow..."

def __init__(self, color):                  #顯示呼叫父類的__init__方法

fruit.__init__(self, color)

class banana(fruit):                              #繼承了父類

def __init__(self, color):                  #顯示呼叫父類的__init__方法

fruit.__init__(self, color)

print "banana's color:%s" %s self.color

def grow(self):                             #覆蓋了父類的grow方法

print "banana grow..."

if __name__ == "__main__":

banana = banana("yellow")

banana.grow()

輸出結果:

fruit『s color : red

grow...

fruit's color : yellow

banana's color : yellow

banana grow...

抽象類的模擬

抽象類是對一類事物特徵和行為的抽象,抽象類由抽象方法組成,python2.5沒有提供抽象類的語法,抽象類的特徵是不能被例項化,但是可以通過python的notimplementederror類來模擬抽象類,notimplementederror類繼承自python執行時錯誤類runtimeerror。當對抽象類進行例項化時,將丟擲異常。

模擬抽象類的實現

def abstract():                                 #定義了全域性函式

raise notimplimentederror(「abstract」):

class fruit:

def __init__(self):

if self.__class__ is fruit:            #如果例項化的類是fruit,則丟擲異常

abstract()

print "fruit..."

def __init__(self):

fruit.__init__(self)

if __name__ == "__main__":

同樣python也沒有提供對介面的支援。介面是特殊的抽象類,介面沒有資料成員,而是一組未實現的方法的集合。

python的抽象類

抽象類 類中可以存在抽象方法,類中的抽象方法是由子類來實現,如果通過類的例項是不能被呼叫的抽象方法,只能由子類的例項物件來呼叫 子類要重寫抽象方法 class print def black print msg raise exception 必須子類實現 def rgb print msg pas...

python的抽象類

可以借助庫abc來實現 先建立類a import abc class a metaclass abc.abcmeta 抽象類 abc.abstractmethod 宣告抽象方法 defread self pass abc.abstractmethod defwrite self pass def s...

抽象類,介面的實戰案例

吃public void eat 睡覺 public void sleep 運動員 abstract class player extends person abstract class coach extends person 桌球運動員 class pingpangplayer extends ...