有時,咱們抽象出一個基類,知道要有哪些方法,但只是抽象方法,並不實現功能,只能繼承,而不能被實例化,但子類必需要實現該方法,這就須要用到抽象基類,在不少時候用到的不少,小猿圈加加剛學到的,把這個分享給你們。code
import abc class Foo(abc.ABC): @abc.abstractmethod def fun(self): pass a = Foo() # 實例化報錯 # TypeError: Can't instantiate abstract class Foo with abstract methods fun
下面子類繼承該方法繼承
class Sub_foo(Foo): def f(self): print('This is sub foo!') c = Sub_foo() # 子類並無實現fun 方法,實例化子類sub_foo一樣報錯 # TypeError: Can't instantiate abstract class Sub_foo with abstract methods fun 咱們在子類實現fun方法: class Sub_foo(Foo): def fun(self): print("From sub_foo") def f(self): print('This is sub foo!') c = Sub_foo() c.fun() c.f()
輸出:get
From sub_fooit
This is sub foo!class
可是注意,若是這時你實例化Foo,仍然是報錯的,由於抽象基類只能繼承而不能實例化,子類要實例化import
必須先實現該方法。方法
爲了理解抽象基類,你能夠這麼理解,咱們有蔬菜這個抽象基類,有黃瓜,番茄,芹菜等,但你永遠只能吃獲得黃瓜,番茄這些,而不能吃到所謂的「蔬菜」,這樣理解起來容易多了吧,小編從小猿圈那取來的精,感受還不錯,有興趣能夠去看一下。im