![](/img/trans.png)
[英]How can I ensure that one of my class's methods is always called even if a subclass overrides it?
[英]Can I ensure that python base class method is always called
我有一個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()
return self.do_run()
@abstractmethod
def do_run(self):
pass # override this method
讓您的子類覆蓋內部方法,而不是外部方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.