簡體   English   中英

我可以確保始終調用python基類方法嗎

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM