Python中的抽象超類

2022-04-03 13:31:57 字數 994 閱讀 2440

1

#-*- coding:utf-8 -*-

2class

super(object):34

deftest(self):

5self.action()67

class

sub(super):89

defaction(self):

10print

"sub action"11

12 obj=sub()

13 obj.test()

**中,超類super中定義了乙個函式test。呼叫了自身的action函式。但是super中並沒有定義action函式。

這是為什麼?

在這個例子中的超類,有時會叫做抽象超類。意思是說,類的部分行為由子類來提供。如果預期的方法沒有在子類中有定義,那麼會丟擲沒有定義變數名的異常。

這就是為什麼上面**的輸出是

sub action

為了避免子類忘記實現action函式,在super類中,也可以加上action函式,並使用assert來提示使用者必須覆蓋這個函式。

**如下:

class

super(object):

deftest(self):

self.action()

defaction(self):

assert false,"

action must be implemented!

"

當然,也可以在super中使用丟擲異常的方法來實現這個提示子類覆蓋action函式的功能。

**如下:

class

super(object):

deftest(self):

self.action()

defaction(self):

raise notimplementederror("

action must be implemented!

")

Python中的抽象類和抽象方法

在python中類 通過繼承metaclass abcmeta類來建立抽象類,抽象類是包含抽象方法的類,其中abcmeta類 metaclass for defining abstact baseclasses,抽象基類的元類 是所有抽象類的基類。定義了抽象類後,在要實現抽象方法的前一行使用 abc...

python 中抽象基類簡介

簡介 python中雖然鴨子型別很強大,但鴨子型別也有著不足。具體關於分類可以參照水禽的分類理解。因此,參照水禽的分類學演化,我建議在鴨子型別的基礎上增加白鵝型別 goose typing 白鵝型別指,只要cls是抽象基類,即cls的元類是abc.abcmeta,就可以使用isinstance ob...

python的抽象類

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