python - 覆盖父类的方法

标签 python class methods subclass overriding

我看到人们一直在做的事情是:

class Man(object):
    def say_hi(self):
        print('Hello, World.')

class ExcitingMan(Man):
    def say_hi(self):
        print('Wow!')
        super(ExcitingMan, self).say_hi()  # Calling the parent version once done with custom stuff.

我从未见过人们做的事情是:

class Man(object):
    def say_hi(self):
        print('Hello, World.')

class ExcitingMan(Man):
    def say_hi(self):
        print('Wow!')
        return super(ExcitingMan, self).say_hi()  # Returning the value of the call, so as to fulfill the parent class's contract.

这是因为我和所有错误的程序员在一起,还是有充分的理由?

最佳答案

我认为显式返回父类(super class)方法的返回值更为谨慎(除了在极少数情况下 child 想要抑制它)。尤其是当你不知道 super 到底在做什么的时候。同意,在 Python 中,您通常可以查找父类(super class)方法并找出它的作用,但仍然如此。

当然,编写其他版本的人可能自己编写了父类和/或知道它没有返回值。在那种情况下,他们会决定不使用明确的 return 语句。

关于python - 覆盖父类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3801484/

相关文章:

c++ - 为什么方法定义是可选的?

java - 在循环错误中调用方法

java - 如何访问子类中的方法

python - 如何将 PyTorch 张量列表转换为 float 列表?

java - 显示 NullPointerException 的自定义类数组

c# - 如何在C#中获取类中的变量列表

c++ - 在类提升中序列化一个类

Python 二进制运算

python - (范围(3),范围(3))值错误: too many values to unpack (expected 2)

python - 使用 Pandas 构造新列,该列给出组中其他元素的平均值