Python-方法重写
时间:2020-02-23 14:43:01 来源:igfitidea点击:
在本教程中,我们将学习Python中的方法重写。
什么是方法重写?
当子类中的方法与父类中的方法具有相同的名称和类型签名时,则认为子类方法将覆盖父类方法,这就是方法覆盖。
方法覆盖的示例
在下面的Python程序中,我们将在子类SuperAwesome中重写父类Awesome的greetings方法。
# parent class
class Awesome:
def greetings(self, message = "Hello World"):
print("Greetings from Awesome:", message)
# child class
class SuperAwesome(Awesome):
# overriding the method of the parent class
def greetings(self, message = None):
if message != None:
print("Greetings from SuperAwesome:", message)
else:
print("Greetings from SuperAwesome!")
# objects
pObj = Awesome() # parent class object
cObj = SuperAwesome() # child class object
# method call
pObj.greetings()
pObj.greetings('Hello!!!')
cObj.greetings()
cObj.greetings('Hello!!!')
执行上述代码后,我们将获得以下输出。
Greetings from Awesome: Hello World Greetings from Awesome: Hello!!! Greetings from SuperAwesome! Greetings from SuperAwesome: Hello!!!
在上面的代码中,父类的" greetings"方法在子类中被覆盖。
我们正在使用父类创建一个对象,并使用子类创建一个对象。
首先,我们使用父类对象" pObj"调用父类的greetings方法。
这给了我们输出的前两行。
接下来,我们通过子类对象cObj调用greetings方法,并获得输出的最后两行。
父类的访问重写方法
我们使用super()方法从子类内部调用父类的重写方法。
在下面的Python程序中,我们从SuperAwesome子类内部调用Awesome类的重写方法。
# parent class
class Awesome:
def greetings(self, message = "Hello World"):
print("Greetings from Awesome:", message)
# child class
class SuperAwesome(Awesome):
# overriding the method of the parent class
def greetings(self, message = None):
if message != None:
print("Greetings from SuperAwesome:", message)
# calling the overridden parent class greetings method
super().greetings(message)
else:
print("Greetings from SuperAwesome!")
# objects
cObj = SuperAwesome() # child class object
# method call
cObj.greetings()
cObj.greetings('Hello!!!')
上面的代码将为我们提供以下输出。
Greetings from SuperAwesome! Greetings from SuperAwesome: Hello!!! Greetings from Awesome: Hello!!!

