0
承接了多項互聯網上的教程中,我創建這個例子:爲什麼我可以在不重寫所有抽象方法的情況下實例化派生自抽象類的類?
from abc import ABCMeta, abstractmethod
class Base(object):
__metaclass__ = ABCMeta
@abstractmethod
def Foo(self):
print('Foo base')
@abstractmethod
def Bar(self):
print('Bar base')
class Sub(Base):
def Foo(self):
print('Foo sub')
# no sub implementation of Bar
s = Sub() # why does this work?
s.Foo() # prints "Foo sub"
s.Bar() # prints "Bar base" (which makes sense if it's
# **not** inheriting from an abstract class)
這是我的理解是,你需要當你從一個包含抽象方法的類繼承重寫所有抽象方法。爲什麼這個工作?