欢迎访问宙启技术站
智能推送

Python中super()方法与类方法的关系初探

发布时间:2023-12-16 23:46:26

在Python中,每个类都有一个名为super()的特殊方法,它用于调用父类的方法。super()方法的作用是返回一个临时对象,该对象绑定了父类的方法,可以用于调用父类中的方法。

在面向对象编程中,子类可以继承父类的方法。有时候,我们希望在子类中重写父类的方法,并在重写的方法中调用父类的方法。这时就可以使用super()方法来实现。

super()方法与类方法的关系是:通过super()方法可以在类方法中调用父类的方法。

下面是一个简单的使用例子来说明super()方法与类方法的关系:

class ParentClass:
    def __init__(self, name):
        self.name = name
    
    def say_hello(self):
        print("Hello, my name is", self.name)
        

class ChildClass(ParentClass):
    def __init__(self, name, age):
        super().__init__(name)  # 调用父类的初始化方法
        self.age = age
    
    def say_hello(self):
        super().say_hello()  # 调用父类的say_hello方法
        print("I'm", self.age, "years old")
        

child = ChildClass("Tom", 10)
child.say_hello()

在上面的例子中,我们定义了两个类:ParentClassChildClassParentClass包含一个初始化方法__init__和一个say_hello方法。ChildClass继承自ParentClass,并重写了父类的__init__say_hello方法。

ChildClass__init__方法中,我们使用super().__init__(name)调用了父类ParentClass的初始化方法,以便进行父类中的数据初始化。

ChildClasssay_hello方法中,我们使用super().say_hello()调用了父类ParentClasssay_hello方法,以便打印出父类中的问候语。然后,我们根据子类中的数据age打印出子类的附加问候语。

运行上面的代码,输出结果为:

Hello, my name is Tom
I'm 10 years old

从输出结果可以看出,super()方法确实可以在子类中调用父类的方法。在子类的say_hello方法中,先调用了父类的say_hello方法,然后再打印子类的附加问候语。这样,我们既可以继承父类的方法,又可以在子类中添加自己的逻辑。