У меня есть определение структуры класса следующим образом: Что я не понимаю, как Super() использует код из класса Super в функции базового класса здесь?Как супер() работает внутри функции дочернего класса?
class Std(object):
def __init__(self):
self.W = defaultdict(int)
def update(self, vect, label):
self.bias += label
for k, v in vect.items():
self.W[k] += v * label
class Avg(Std):
def __init__(self):
super(Avg, self).__init__()
self.U = defaultdict(int)
self.beta = 0
def update(self, vect, label):
super(Avg, self).update(vect, label)
self.beta += label * self.count
for k, v in vect.items():
self.U[k] += v * label * self.count
Может кто-нибудь объяснить мне, сколько строк кода на самом деле есть в методе обновления класса Avg и как супер() работает здесь?
'супер()' предоставляет доступ к существующим методам другого класса в классе MRO; это означает, что вы просто * вызываете другой метод *, только одно может иметь то же имя, что и тот, который уже присутствует в экземпляре. –
super * звонки * способ из базового класса. Что касается количества строк кода, вы можете их подсчитать. –
@ DanielRoseman, говорящий «базовый класс», вводит в заблуждение. Он не всегда вызывает базовый класс, он может вызывать класс сестры. – wim