Python基础之多态
什么是多态
多态是一种对象编程的重要特性,可以让不同类的对象对同一消息作出不同的响应。这些不同的响应都是基于这些对象的类所定义的。
换句话说,多态是指通过相同的接口调用不同的类型对象所产生的不同结果。这就是所谓的“一个接口,多种实现”。
多态的实现方式
在Python中,实现多态有两种方式:
- 函数重写(方法重定义)
- 继承和多重继承
以下是两条示例说明:
函数重写
当我们调用一个方法时,程序会根据该对象的类型来判断具体执行哪个方法。例如:
class Animal:
def talk(self):
pass
class Dog(Animal):
def talk(self):
return "Woof!"
class Cat(Animal):
def talk(self):
return "Meow!"
animals = [Dog(), Cat()]
for animal in animals:
print(animal.talk())
以上代码中,Dog
和Cat
类都继承了Animal
类,并且它们都重写了talk
方法。此时,如果我们调用talk
方法,会根据对象的类型来执行不同的方法。在循环遍历每个动物时,我们调用的是不同动物的talk
方法,但结果会根据对应的类的定义进行响应。
继承和多重继承
在Python中,我们可以使用继承和多重继承来实现多态。例如:
class Person:
def __init__(self, name):
self.name = name
def info(self):
print("person name: ", self.name)
class Student(Person):
def info(self):
print("student name: ", self.name)
class Teacher(Person):
def info(self):
print("teacher name: ", self.name)
class Assistant(Student, Teacher):
def info(self):
super().info()
assistant = Assistant("Alice")
assistant.info()
以上代码中,我们定义了Person
、Student
、Teacher
三个类,分别重写了info
方法。此外,我们还定义了一个多重继承的Assistant
类,该类继承了Student
和Teacher
类,并且也重写了info
方法。
当我们实例化一个Assistant
对象时,可以调用info
方法,此时会执行Assistant
类的info
方法,并且由于使用了super().info()
,所以程序也会调用该类的父类的info
方法。而由于多重继承的存在,它会优先调用继承链中最先出现的父类的info
方法——也就是Student
类的info
方法。因此,最终结果输出为student name: Alice
。
总结
以上是Python基础之多态的详细攻略。通过示例说明,我们可以了解到多态的实现方式,并且了解到多态的作用,即“一个接口,多种实现”。在Python中,多态可以通过函数重写、继承和多重继承等方式来实现。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python基础之多态 - Python技术站