【练习】动物园
项目简介
动物园系统
知识模块
- Python 编程语言
知识点
- 实例方法
- 实例属性
- 类属性
- 构造方法
- 封装
- 继承
- 多态
受众
- 初级测试开发工程师
- 初级Python开发工程师
作业要求
设计一个简单的动物园系统,其中包含不同类型的动物(如狗、猫和鸟)。每个动物都有自己的属性(如名字、年龄)和行为(如发出声音)。使用封装、继承和多态来完成。
解题思路
-
创建一个动物基类,其中包含一些共同的属性(如名字、年龄)和方法(如发出声音)。定义构造函数 init 和发声方法。
-
创建子类(每种动物),分别继承自基类。
-
在每个子类中,可以定义不同的属性和重写发声方法。
-
创建函数来实例化不同类型的动物,并调用它们的方法。
完整代码
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
def make_sound(self):
pass
# 定义 Dog 子类
class Dog(Animal):
def __init__(self, name, age):
super().__init__(name, age)
def make_sound(self):
print(f"{self.name} 发出汪汪叫声!")
# 定义 Cat 子类
class Cat(Animal):
def __init__(self, name, age):
super().__init__(name, age)
def make_sound(self):
print(f"{self.name} 发出喵喵叫声!")
# 定义 Bird 子类
class Bird(Animal):
def __init__(self, name, age):
super().__init__(name, age)
def make_sound(self):
print(f"{self.name} 发出鸟叫声!")
# 创建动物对象并调用方法
dog = Dog("狗狗", 3)
cat = Cat("猫咪", 2)
bird = Bird("小鸟", 1)
dog.make_sound()
cat.make_sound()
bird.make_sound()
代码讲解
-
定义父类
class Animal: def __init__(self, name, age): self.name = name self.age = age def make_sound(self): pass
- 这部分定义了一个基类
Animal
,其中包含了构造函数__init__
,该构造函数接收动物的名字和年龄作为参数,并将它们存储为对象属性。还定义了一个未实现的make_sound
方法,它在基类中只是一个占位符方法。
- 这部分定义了一个基类
-
定义子类
class Dog(Animal): def __init__(self, name, age): super().__init__(name, age) def make_sound(self): print(f"{self.name} 发出汪汪叫声!")
- 这部分定义了
Dog
子类,它继承自基类Animal
。它的构造函数使用super().__init__
来调用基类的构造函数,从而初始化继承的属性。make_sound
方法被重写,实现了狗叫的功能。-
Cat
子类和Bird
子类与Dog
子类类似 -
实例对象
dog = Dog("狗狗", 3) cat = Cat("猫咪", 2) bird = Bird("小鸟", 1) dog.make_sound() cat.make_sound() bird.make_sound()
- 实例化了不同类型的动物对象,即
dog
、cat
和bird
。然后,调用了它们的make_sound
方法,由于多态性的存在,实际上调用了每个子类中不同的make_sound
方法,分别输出不同的叫声。