实现者强制执行父类的显式初始化的方法是什么?

时间:2017-11-28 21:58:46

标签: python python-3.x

考虑以下示例代码段

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的初始值设定项吗?

0 个答案:

没有答案