本问题已经有最佳答案,请猛点这里访问。
我有一个类结构定义如下:我不明白的是,Super()如何在基类的函数中使用超类的代码?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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类的update方法中实际有多少行代码? Super()是如何工作的?
super()是对超类方法的调用。在您的示例中,对Avg类中的update方法的调用将首先使用在这一行
你的Avg更新方法相当于
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Avg(Std): def __init__(self): super(Avg, self).__init__() self.U = defaultdict(int) self.beta = 0 def update(self, vect, label): self.bias += label for k, v in vect.items(): self.W[k] += v * label self.beta += label * self.count for k, v in vect.items(): self.U[k] += v * label * self.count |