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()
在上面的例子中,我们定义了两个类:ParentClass和ChildClass。ParentClass包含一个初始化方法__init__和一个say_hello方法。ChildClass继承自ParentClass,并重写了父类的__init__和say_hello方法。
在ChildClass的__init__方法中,我们使用super().__init__(name)调用了父类ParentClass的初始化方法,以便进行父类中的数据初始化。
在ChildClass的say_hello方法中,我们使用super().say_hello()调用了父类ParentClass的say_hello方法,以便打印出父类中的问候语。然后,我们根据子类中的数据age打印出子类的附加问候语。
运行上面的代码,输出结果为:
Hello, my name is Tom I'm 10 years old
从输出结果可以看出,super()方法确实可以在子类中调用父类的方法。在子类的say_hello方法中,先调用了父类的say_hello方法,然后再打印子类的附加问候语。这样,我们既可以继承父类的方法,又可以在子类中添加自己的逻辑。
