Python的同名和继承方法

Python的同名和继承方法,第1张

概述我有一个奇怪的问题,看到真实的背景相当复杂,我做了一个简单的例子.我有两个类Base和Child.每个共享一个同名方法去.我希望Child类能够做的是从Base继承go方法.但是,当我在Child上调用go方法时,我希望它做一些事情(在这种情况下,将属性A乘以2),然后调用它继承自Base的go方法. 在这个例子中,调用go on Base将打印35,而我希望Child打印70. class B 我有一个奇怪的问题,看到真实的背景相当复杂,我做了一个简单的例子.我有两个类Base和Child.每个共享一个同名的方法去.我希望Child类能够做的是从Base继承go方法.但是,当我在Child上调用go方法时,我希望它做一些事情(在这种情况下,将属性A乘以2),然后调用它继承自Base的go方法.

在这个例子中,调用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的同名和继承方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1192580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存