在这个例子中,调用go on Base将打印35,而我希望Child打印70.
class Base : def @R_502_4263@ (self) : self.A = 35 def go (self) : print self.Aclass Child (Base) : def @R_502_4263@ (self) : Base.@R_502_4263@(self) def go (self) : self.A = self.A * 2 # Somehow call Base's **go** method,which would print 70.
我知道这样做通常不是一个好主意(因为它可能会令人困惑),但是在我正在做的事情的背景下,这是有道理的.
解决方法 这绝对是一件好事.你要找的是super()
. class Child (Base): def @R_502_4263@ (self): super(Child,self).__init__() def go(self): self.A = self.A * 2 super(Child,self).go()
在Python 3中,您可以不带参数使用它,因为它会自动检测正确的.
编辑:super()适用于新式类,无论如何都应该使用它.只是声明任何不从另一个继承的类继承自object:
class Base(object):
此外,括号前后的所有额外空格都不被视为良好的python样式,请参阅PEP8.
总结以上是内存溢出为你收集整理的Python的同名和继承方法全部内容,希望文章能够帮你解决Python的同名和继承方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)