gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:24:02 25 4
gpt4 key购买 nike

我有一个 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()。 .这本身并不是一个大问题,但出于好奇,是否可以从基类本身以某种方式确保这一点 bind_input在执行子对象的 run 之前调用?

最佳答案

通常的面向对象方法是这样的:

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

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

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

关于python - 我可以确保始终调用 python 基类方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41643672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com