python的多态如何体现
时间: 2023-11-16 18:54:33 浏览: 42
Python的多态是指同一种操作作用于不同的对象上面,可以产生不同的执行结果。在Python中,多态性体现在函数和方法的参数上,即不同的对象调用相同的方法,产生不同的结果。
例如,我们可以定义一个Animal类,然后派生出Dog和Cat两个子类。这两个子类都有自己的speak()方法,但是实现方式不同。当我们调用speak()方法时,会根据对象的类型来调用相应的方法。
下面是一个简单的示例代码:
```python
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
def animal_speak(animal):
print(animal.speak())
dog = Dog()
cat = Cat()
animal_speak(dog) # 输出 "Woof!"
animal_speak(cat) # 输出 "Meow!"
```
在上面的代码中,我们定义了一个animal_speak()函数,它接受一个Animal类型的参数。当我们传入一个Dog对象时,会调用Dog类中的speak()方法,输出"Woof!";当我们传入一个Cat对象时,会调用Cat类中的speak()方法,输出"Meow!"。这就是多态性的体现。
相关问题
python怎么体现多态
在Python中,多态性是通过继承和方法重写来实现的。当一个子类对象可以以不同的方式响应同一个方法调用时,多态性就得以体现。具体来说,多态性在Python中体现为,一个父类的引用可以指向子类的对象,并且可以调用子类重写的方法。
在上述代码中,Animal是父类,Bird和Fish是其子类。这里通过重写父类的sleep方法,在子类中实现不同的行为。当我们创建Animal、Bird和Fish的实例并调用sleep方法时,实际上会根据对象的类型调用相应的重写方法。这就是Python中多态性的体现。
Python 多态练习题
好的,以下是几个 Python 多态的练习题:
1. 创建一个 `Animal` 类和它的子类 `Dog`、`Cat`。每个子类都有一个 `speak()` 方法,分别返回 `"Woof"` 和 `"Meow"`。创建一个函数 `animal_speak()`,它接受一个 `Animal` 类型的对象,并调用它的 `speak()` 方法。
```python
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
return "Woof"
class Cat(Animal):
def speak(self):
return "Meow"
def animal_speak(animal):
return animal.speak()
```
2. 创建一个 `Shape` 类和它的子类 `Circle`、`Rectangle`。每个子类都有一个 `area()` 方法,分别返回圆形和矩形的面积。创建一个函数 `get_area()`,它接受一个 `Shape` 类型的对象,并调用它的 `area()` 方法。
```python
import math
class Shape:
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return math.pi * self.radius ** 2
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def get_area(shape):
return shape.area()
```
3. 创建一个 `Person` 类和它的子类 `Student`、`Teacher`。每个子类都有一个 `teach()` 方法,分别返回 `"I will teach you"` 和 `"I will grade your papers"`. 创建一个函数 `classroom()`,它接受一个 `Person` 类型的对象,并调用它的 `teach()` 方法。
```python
class Person:
def teach(self):
pass
class Student(Person):
def teach(self):
return "I will learn from you"
class Teacher(Person):
def teach(self):
return "I will teach you"
def classroom(person):
return person.teach()
```
这些练习题可以帮助你加深对 Python 多态的理解。