考虑以下示例代码段
import abc
class BASE(metaclass=abc.ABCMeta):
def __init__(self, name):
assert name is not None, "Name must be provided."
self.num = 3
@abc.abstractmethod
def compute(self):
pass
class CHILD(BASE):
def __init__(name):
'''
'''
def compute(self):
return self.num + 34
执行时会出现以下明显错误:
属性错误:'儿童'对象没有属性' num'
在目前的情况下,BASE没有被初始化,因为如果我们如下所示添加打印功能,它不会打印任何东西。
class BASE(metaclass=abc.ABCMeta):
def __init__(self, name):
print(name)
assert name is not None, "Name must be provided."
self.num = 3
我们可以在此类设计中执行任何操作,以确保BASE
的子类化必须显式调用BASE
的初始值设定项吗?