Python中如何在init()方法中调用父类的方法
在Python中,我们可以通过super()函数来调用父类的方法。super()函数返回一个临时对象,该对象允许我们调用父类的方法,并传递所需的参数。
下面是一个使用super()函数调用父类方法的例子:
class Parent:
def __init__(self, name):
self.name = name
def hello(self):
print('Hello,', self.name)
class Child(Parent):
def __init__(self, name, age):
super().__init__(name) # 调用父类的构造方法
self.age = age
def greet(self):
super().hello() # 调用父类的方法
print('I am', self.age, 'years old')
child = Child('Tom', 10)
child.greet()
在上面的例子中,我们定义了一个父类Parent和一个子类Child,父类中有一个hello()方法,子类中有一个greet()方法。在子类的构造方法中,我们通过super()函数调用了父类的构造方法init(),并传递了所需的参数name。在子类的greet()方法中,我们再次使用super()函数调用了父类的方法hello()。
运行这段代码,输出结果如下:
Hello, Tom I am 10 years old
我们可以看到,子类Child成功调用了父类Parent的hello()方法,并且在输出中包含了子类Child自己的一些信息。
需要注意的是,super()函数只能用于新式类(在Python 3.x中所有的类都是新式类,相当于Python 2.x中的继承自object的类)。对于旧式类,我们需要显式地调用父类的方法,如Parent.__init__(self, name)来调用父类的构造方法。但是在实际程序开发中,我们一般都会使用新式类,因此不需要过多考虑旧式类的相关问题。
此外,我们还可以通过super()函数调用父类的其他方法,不仅限于构造方法。只需要在super()后面加上父类的方法名,并传递相应的参数即可。例如:
class Parent:
def __init__(self, name):
self.name = name
def hello(self):
print('Hello,', self.name)
class Child(Parent):
def __init__(self, name, age):
super().__init__(name)
self.age = age
def greet(self):
super().hello()
print('I am', self.age, 'years old')
def rename(self, new_name):
super().__init__(new_name) # 调用父类的构造方法进行重命名
child = Child('Tom', 10)
child.greet()
child.rename('Jerry')
child.greet()
在上面的例子中,我们新增了一个子类的方法rename(),该方法通过调用父类的构造方法进行重命名。我们可以看到,在调用rename()方法后,子类的greet()方法输出的结果发生了变化,显示出了新的名字。
总结一下,在子类的init()方法中调用父类的方法可以通过super()函数来实现。只需要在super()后面加上父类的方法名,并传递相应的参数即可。这样,我们就能够在子类中使用父类的方法,从而实现代码的重用。
