我可以确保始终调用python基类方法

时间:2017-01-13 21:24:47

标签: python

我有一个python抽象基类,如下所示:

basesave()

现在,各种派生类将从此节点类继承并覆盖class Node(object): """ All concrete node classes should inherit from this """ __metaclass__ = ABCMeta def __init__(self, name): self.name = name self.inputs = dict() def add_input(self, key, value=None, d=None): self.inputs[key] = (d, value) def bind_input(self): print "Binding inputs" @abstractmethod def run(self): pass 方法。始终run必须是bind_input()方法中应该调用的第一件事。目前,对于所有派生类,开发人员必须确保首先调用run。这本身并不是一个大问题,但出于好奇,有可能从基类本身以某种方式确保在执行子对象self.bind_input()之前调用bind_input吗?

1 个答案:

答案 0 :(得分:4)

通常面向对象的方法是:

def run(self):
    self.bind_input()
    return self.do_run()

@abstractmethod
def do_run(self):
    pass # override this method

让您的子类覆盖内部方法,而不是外部方法。