[英]Calling overridden parent class method in parent class
我試圖在ChildClass
覆蓋兩個父類函數train
和eval
。 在父類中, 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.