正在重写__init__方法



我对重写感到困惑。当我们在类中定义init方法时,它真的覆盖了基"的init法吗;对象";班据我所知,重写方法的基本规则是重写和重写方法都应该有相同的签名。但是在下面的例子中,如果我们检查对象类和子类的init方法的签名,它是不相等的。

from inspect import signature
class Child:
def __init__(self, age):
self.age = age
print(signature(Child.__init__) == object.__init__)

定义__init__方法时,将指示Python如何实例化该类。因此,您正在重写基object类的__init__方法,因为现在要实例化类Child的新对象,您必须使用新的__init__[/strong>方法。

在Python中,子类中重写的函数不需要与父类中的函数具有相同的签名,只要它们遵守Liskov替换原则即可。不过,这对于构造函数来说并不是必需的。

相关内容

  • 没有找到相关文章

最新更新