gpt4 book ai didi

python - 同名和继承的方法,Python

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:09 25 4
gpt4 key购买 nike

我有一个奇怪的问题,鉴于实际情况相当复杂,我举了一个简单的例子。我有两个类 BaseChild。每个共享一个同名方法go。我希望 Child 类能够做的是从 Base 继承 go 方法。但是,当我在 Child 上调用 go 方法时,我希望它做一些事情(在这种情况下,将属性 A 乘以 2),然后调用它从 Base 继承的 go 方法。

在此示例中,在 Base 上调用 go 将打印 35,而我希望 Child 打印 70。

class Base :
def __init__ (self) :
self.A = 35

def go (self) :
print self.A


class Child (Base) :
def __init__ (self) :
Base.__init__(self)

def go (self) :
self.A = self.A * 2

# Somehow call Base's **go** method, which would print 70.

我知道这样做通常不是一个好主意(因为它可能会造成混淆),但是在我正在做的事情的上下文中它是有道理的。

最佳答案

这绝对是一件好事。您要找的是 super() .

class Child (Base):
def __init__ (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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7003125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com