簡體   English   中英

在父類中調用重寫的父類方法

[英]Calling overridden parent class method in parent class

我試圖在ChildClass覆蓋兩個父類函數traineval 在父類中, eval()基本上調用train() 但是,我意識到當我編寫如下代碼時, 父類中的eval()試圖在ChildClass調用函數train() - 我希望父類中的eval()在父類中調用train()而是改為。

我只是想知道是否有任何干凈的解決方案來改變ChildClass ,允許父類調用父train()函數?

class ChildClass(nn.Module):
    def __init__(self):
        super(ChildClass, self).__init__()

    def train(self):
        super(ChildClass, self).train()

    def eval(self):
        super(ChildClass, self).eval()

父類位於Python包( pytorch )中,因此不應進行任何更改:

class Module(object):
    #...

    def train(self, mode=True):
        # ...
        return self

    def eval(self):
        return self.train(False)

除了調用父級(至少從您共享的代碼中)之外,重寫的方法沒有做任何事情。

所以,我認為你想要一個方法與train()/ eval()中的步驟相同。 我猜你不需要覆蓋train()或eval(),而是在你的子類中添加方法,並以你想要混合它們的順序調用parent train()/ eval()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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