抽象基 class 未强制执行函数实现
Abstract base class is not enforcing function implementation
from abc import abstractmethod, ABCMeta
class AbstractBase(object):
__metaclass__ = ABCMeta
@abstractmethod
def must_implement_this_method(self):
raise NotImplementedError()
class ConcreteClass(AbstractBase):
def extra_function(self):
print('hello')
# def must_implement_this_method(self):
# print("Concrete implementation")
d = ConcreteClass() # no error
d.extra_function()
我在 Python 3.4。我想定义一个抽象基础class,它定义了一些需要由它的子classses 实现的功能。但是当 subclass 没有实现函数时 Python 不会引发 NotImplementedError...
metaclasses声明的语法在Python 3。 Python 3 在 base-[ 中使用 关键字参数 而不是 __metaclass__
字段=45=]列表:
import abc
class AbstractBase(metaclass=abc.ABCMeta):
@abc.abstractmethod
def must_implement_this_method(self):
raise NotImplementedError()
现在调用 d = ConcreteClass()
将 引发异常 ,因为 metaclass除非其所有抽象方法和属性都被 覆盖(有关详细信息,请参阅 @abc.abstractmethod
),否则无法实例化派生自 ABCMeta
的方法:
TypeError: Can't instantiate abstract class ConcreteClass with abstract methods
must_implement_this_method
希望对您有所帮助:)
from abc import abstractmethod, ABCMeta
class AbstractBase(object):
__metaclass__ = ABCMeta
@abstractmethod
def must_implement_this_method(self):
raise NotImplementedError()
class ConcreteClass(AbstractBase):
def extra_function(self):
print('hello')
# def must_implement_this_method(self):
# print("Concrete implementation")
d = ConcreteClass() # no error
d.extra_function()
我在 Python 3.4。我想定义一个抽象基础class,它定义了一些需要由它的子classses 实现的功能。但是当 subclass 没有实现函数时 Python 不会引发 NotImplementedError...
metaclasses声明的语法在Python 3。 Python 3 在 base-[ 中使用 关键字参数 而不是 __metaclass__
字段=45=]列表:
import abc
class AbstractBase(metaclass=abc.ABCMeta):
@abc.abstractmethod
def must_implement_this_method(self):
raise NotImplementedError()
现在调用 d = ConcreteClass()
将 引发异常 ,因为 metaclass除非其所有抽象方法和属性都被 覆盖(有关详细信息,请参阅 @abc.abstractmethod
),否则无法实例化派生自 ABCMeta
的方法:
TypeError: Can't instantiate abstract class ConcreteClass with abstract methods
must_implement_this_method
希望对您有所帮助:)