Python面向对象编程与依赖管理

一、实验目的

  1. 掌握Python基本语法,能够独立编写带输入输出、循环判断的脚本。
  2. 理解面向对象三大特性(封装、继承、多态),能够自定义类并实现继承和方法重写。
  3. 熟练使用pip管理第三方依赖,掌握虚拟环境的创建与激活。

二、实验环境

  • 操作系统:Windows
  • Python版本:3.x
  • 开发工具:VS Code
  • 第三方库:见 requirements.txt(包含FastAPI、Uvicorn等,本次实验仅验证依赖管理能力)

三、实验内容

3.1 编写带输入输出、循环判断的Python脚本

文件:guess_num.py

该程序实现一个猜数字游戏:

  • 程序随机生成1~100之间的整数。
  • 用户通过控制台输入猜测的数字。
  • 程序判断并提示“太大”、“太小”或“正确”。
  • 循环直到猜中,并统计猜测次数。

核心代码分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import random

class GuessNumber:
def __init__(self):
self.guess_number = random.randint(1, 100) # 随机目标数
self.n = 0 # 猜的次数

def guess(self):
while True:
user_guess = int(input("Guess a number between 1 and 100: "))
if user_guess < self.guess_number:
print("太小")
self.n += 1
elif user_guess > self.guess_number:
print("太大")
self.n += 1
else:
print("正确")
print(f"你总共猜了 {self.n} 次")
break

关键点:

  • 使用input()获取用户输入,int()转换类型。
  • 使用if-elif-else进行判断。
  • 使用while True循环,直到猜中break退出。
  • 通过类封装游戏逻辑。

3.2 理解面向对象三大特性:自定义类、继承、方法重写

文件:Animal.py

定义了基类Animal和两个子类DogCat,演示了封装、继承、多态。

代码分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Animal:
def __init__(self, species):
self.species = species # 封装:属性

def make_sound(self):
return "Some sound" # 父类方法

class Dog(Animal): # 继承
def __init__(self, name):
super().__init__("Dog") # 调用父类构造器
self.name = name

def make_sound(self): # 方法重写(多态)
return "汪汪!"

class Cat(Animal):
def __init__(self, name):
super().__init__("Cat")
self.name = name

def make_sound(self):
return "喵喵!"

三大特性体现:

  • 封装:将数据(species, name)和行为(make_sound)封装在类中。
  • 继承DogCat继承自Animal,复用species属性和make_sound方法结构。
  • 多态:子类重写make_sound方法,同一接口表现出不同行为。

运行结果:

1
2
旺财 是一只 Dog,它会说: 汪汪!
咪咪 是一只 Cat,它会说: 喵喵!

3.3 使用pip管理第三方依赖,创建并激活虚拟环境

文件:requirements.txt

内容包含fastapiuvicornpydantic等库,用于演示依赖管理。

操作步骤:

  1. 创建虚拟环境(以Windows为例,Linux/macOS类似):

    1
    python -m venv venv
  2. 激活虚拟环境

    • Windows:venv\Scripts\activate
    • Linux/macOS:source venv/bin/activate
  3. 安装依赖

    1
    pip install -r requirements.txt
  4. 验证安装

    1
    pip list

    应显示requirements.txt中列出的所有包。

  5. 导出当前环境依赖

    1
    pip freeze > requirements.txt

四、实验结果与分析

4.1 猜数字游戏运行示例

1
2
3
4
5
6
7
Guess a number between 1 and 100: 50
太小
Guess a number between 1 and 100: 75
太大
Guess a number between 1 and 100: 62
正确
你总共猜了 3 次

分析:程序正确实现了循环输入、大小判断、次数统计,符合预期。

4.2 动物类继承示例

输出如上所示,说明继承和方法重写正确执行,多态性体现良好。

4.3 依赖管理

执行pip install -r requirements.txt后,所有依赖成功安装。使用pip freeze可复现完全相同的依赖版本,便于环境迁移。

五、总结

通过本次实验,我掌握了以下技能:

  1. Python基础编程:能够编写包含输入输出、条件判断、循环控制的脚本,如猜数字游戏。
  2. 面向对象编程
    • 理解了类的定义与实例化。
    • 掌握了继承的使用方法(class Child(Parent))。
    • 学会了方法重写(override)和多态的运用。
    • 体会了封装带来的代码模块化优势。
  3. 依赖管理
    • 能够使用pip安装、卸载、查看包。
    • 会创建和激活Python虚拟环境,避免全局污染。
    • 理解requirements.txt的作用,能够用pip freeze生成依赖清单。

本次实验为后续开发更复杂的Python项目(如Web服务、数据分析、机器学习)奠定了坚实的基础。今后将继续加强面向对象设计思想,并注重项目环境的隔离与管理。