Я пытаюсь переопределить две родительские функции класса train
и eval
в ChildClass
.В родительском классе eval()
в основном вызывает train()
.Однако я понимаю, что когда я пишу свой код, как показано ниже, eval()
в родительском классе пытается вызвать функцию train()
в ChildClass
- я бы хотел 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)