と呼ばれていることを確認することができます:は、私は次のように私はPythonの抽象基本クラスを持っている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()を最初に呼び出します。 – GantTheWanderer
ええ、すべての子クラスは 'run'のクラス固有の実装を持たなければなりません。 – Luca