gpt4 book ai didi

python-3.x - 如何在python中修改/覆盖继承的类函数?

转载 作者:行者123 更新时间:2023-12-03 22:36:52 25 4
gpt4 key购买 nike

我有确切的函数名称 say_hello在父类和继承类中。我想指定参数name在 Kitten 类中,但允许用户在 Cat 类中指定参数。

有没有办法避免需要重复行return ('Hello '+name)say_hello小猫课的功能?

目前:

class Cat:
def __init__(self):
pass

def say_hello(name):
return ('Hello '+name)

class Kitten(Cat):
def __init__(self):
super().__init__()

def say_hello(name='Thomas'):
return ('Hello '+name)

x = Cat
print (x.say_hello("Sally"))
y = Kitten
print (y.say_hello())

理想情况下:
class Cat:
def __init__(self):
pass

def say_hello(name):
return ('Hello '+name)

class Kitten(Cat):
def __init__(self):
super().__init__()

def say_hello():
return super().say_hello(name='Thomas') # Something like this, so this portion of the code doesn't need to repeat completely

最佳答案

say_hello方法应包括 self作为第一个参数,以便它可以使用 super()访问父级 say_hello 的函数方法。您还应该通过带括号调用它来实例化一个类:

class Cat:
def say_hello(self, name):
return 'Hello ' + name

class Kitten(Cat):
def say_hello(self, name='Thomas'):
return super().say_hello(name)

x = Cat()
print(x.say_hello("Sally"))
y = Kitten()
print(y.say_hello())

这输出:
Hello Sally
Hello Thomas

关于python-3.x - 如何在python中修改/覆盖继承的类函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54371507/

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