【发布时间】:2017-01-13 21:24:46
【问题描述】:
我有一个python抽象基类如下:
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()。这本身并不是一个大问题,但出于好奇,是否有可能从基类本身以某种方式确保在执行子对象的run 之前调用bind_input?
【问题讨论】:
-
方法必须是抽象的吗?
def run(self): self.bind_input()然后所有子类都先调用base.run(),比较直观的标准。 -
是的,因为所有子类都必须具有
run的类特定实现。
标签: python