python 类函数多态 示例
时间: 2023-10-13 11:20:22 浏览: 141
好的,关于 Python 中的多态,我们可以举一个简单的例子。假设我们有一个 Animal 类,里面有一个名为 sound 的方法,它用来输出动物的叫声。现在我们派生出一个 Dog 类和一个 Cat 类,它们都继承自 Animal,并且都覆盖了 sound 方法。这里就体现出了多态的概念,因为无论我们调用 sound 方法时是用 Dog 类对象还是 Cat 类对象,都会触发相应的方法,输出对应动物的叫声。例如,我们可以这样写代码:
```
class Animal:
def sound(self):
pass
class Dog(Animal):
def sound(self):
print("汪汪汪")
class Cat(Animal):
def sound(self):
print("喵喵喵")
def main():
animals = [Dog(), Cat()]
for animal in animals:
animal.sound()
if __name__ == "__main__":
main()
```
输出:
```
汪汪汪
喵喵喵
```
这就是一个简单的多态示例,即在多个不同的类中有着相同的方法名,但是实现方式不同。
相关问题
类的多态的示例
好的,这是一个类的多态示例:
```python
class Animal:
def __init__(self, name):
self.name = name
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Woof!"
class Cat(Animal):
def make_sound(self):
return "Meow!"
class Bird(Animal):
def make_sound(self):
return "Tweet!"
def animal_sound(animal):
print(animal.make_sound())
dog = Dog("Rex")
cat = Cat("Whiskers")
bird = Bird("Tweety")
animal_sound(dog) # Output: "Woof!"
animal_sound(cat) # Output: "Meow!"
animal_sound(bird) # Output: "Tweet!"
```
在这个示例中,`Animal` 是一个基类,包含一个 `make_sound` 方法,但是这个方法没有实现。`Dog`、`Cat` 和 `Bird` 都是继承自 `Animal` 的子类,并且都实现了自己的 `make_sound` 方法。`animal_sound` 函数接受一个 `Animal` 对象作为参数,并调用传入对象的 `make_sound` 方法。由于每个子类都实现了自己的 `make_sound` 方法,所以 `animal_sound` 函数可以在运行时根据传入的对象的实际类型来确定调用哪个方法。这就是多态的体现。
人机猜拳游戏代码python用类和多态来写
在Python中,我们可以使用类和多态来创建一个简单的人机猜拳游戏。首先,我们定义一个基本的`Game`类,然后为石头、剪刀、布三种情况分别创建子类,如`Rock`, `Scissors`, 和 `Paper`。每个子类都覆盖一个`play`方法,表示它们各自的猜测。这里是一个简单的示例:
```python
class Game:
def play(self):
raise NotImplementedError("子类需要实现这个方法")
class Player:
def __init__(self, choice):
self.choice = choice
class Rock(Player):
def play(self):
return "石头"
class Scissors(Player):
def play(self):
return "剪刀"
class Paper(Player):
def play(self):
return "布"
def guess_game():
player_choice = input("请输入你的选择(石头、剪刀、布):")
game = {
'石头': Rock,
'剪刀': Scissors,
'布': Paper
}.get(player_choice, None)
if not game:
print("无效的选择,请重新输入。")
return
computer_choice = game().play()
result = compare_choices(player_choice, computer_choice)
print(f"你选择了{player_choice},电脑选择了{computer_choice},结果是:{result}")
def compare_choices(player, computer):
if player == computer:
return "平局"
elif (player == '石头' and computer == '剪刀') or \
(player == '剪刀' and computer == '布') or \
(player == '布' and computer == '石头'):
return "你赢了!"
else:
return "电脑赢了!"
guess_game()
```
在这个代码中,当你运行`guess_game()`函数时,它会提示用户输入他们的选择,并根据玩家输入动态地调用相应子类的`play`方法。这就是多态的应用,因为`Game`类的实例可以根据用户的输入变成`Rock`, `Scissors`, 或 `Paper`的具体实例。
阅读全文