第三章 模块化与面向对象编程

目录

         3.1 模块的引入

3.2 自定义模块开发

3.3 对象与方法

3.4 像素与颜色处理

3.5 模块测试

3.6 模块开发规范

3.7 本章小结


3.1 模块的引入

模块是包含Python代码的.py文件,通过import语句加载:

import math  # 导入标准库
from random import randint  # 导入特定功能
import numpy as np  # 使用别名

print(math.sqrt(16))  # 4.0
print(randint(1,10))  # 随机整数

模块搜索路径(优先级从高到低):

  1. 当前目录

  2. PYTHONPATH环境变量路径

  3. Python安装目录

3.2 自定义模块开发

创建graphics.py文件:

"""图形处理模块"""
_VERSION = 1.0

def render(image):
    """图像渲染函数"""
    pass

class Canvas:
    """画布类"""
    def __init__(self, size):
        self.size = size

使用自定义模块:

import graphics
canvas = graphics.Canvas((800,600))

特殊变量

  • __name__:模块被直接运行时值为"__main__"

  • __file__:显示模块文件路径

3.3 对象与方法

面向对象三要素

python

class Color:
    def __init__(self, r, g, b):  # 构造方法
        self.r = r
        self.g = g
        self.b = b
    
    def hex_code(self):  # 实例方法
        return f"#{self.r:02x}{self.g:02x}{self.b:02x}"

red = Color(255, 0, 0)
print(red.hex_code())  # #ff0000
概念描述示例
对象的蓝图class Color
实例类的具体实现red = Color()
方法类中定义的函数hex_code()
属性对象存储的数据self.r

3.4 像素与颜色处理

RGB颜色模型

class Color:
    def __init__(self, r, g, b):  # 构造方法
        self.r = r
        self.g = g
        self.b = b
    
    def hex_code(self):  # 实例方法
        return f"#{self.r:02x}{self.g:02x}{self.b:02x}"

red = Color(255, 0, 0)
print(red.hex_code())  # #ff0000

颜色表示方式

  • RGB元组:(255, 0, 0)

  • 十六进制:#FF0000

  • HSL格式:(0°, 100%, 50%)

3.5 模块测试

单元测试示例

import unittest

class TestColor(unittest.TestCase):
    def setUp(self):
        self.red = Color(255, 0, 0)
    
    def test_hex(self):
        self.assertEqual(self.red.hex_code(), "#ff0000")
    
    def test_invalid(self):
        with self.assertRaises(ValueError):
            Color(300, 0, 0)  # RGB值超出范围

if __name__ == "__main__":
    unittest.main()

测试覆盖率

  1. 边界值测试

  2. 异常情况测试

  3. 性能压力测试

3.6 模块开发规范

PEP8模块规范

  1. 导入顺序(间隔空行):

    # 标准库
    import os
    import sys
    
    # 第三方库
    import numpy as np
    
    # 本地模块
    from . import utils

  2. 避免循环导入

  3. 模块文档字符串

  4. 使用类型提示:

    def blend_colors(c1: Color, c2: Color, ratio: float) -> Color:
        pass

3.7 本章小结

开发原则

  • 模块化:将功能拆分为独立模块

  • 封装性:隐藏对象内部实现细节

  • 可测试性:模块应具备可测试性

  • 风格统一:遵循PEP8规范

典型应用场景

  1. 将图像处理功能封装为image_processor模块

  2. 使用类管理游戏角色属性和行为

  3. 通过单元测试保证颜色转换准确性

(提示:复杂项目建议使用pytest框架,大型模块使用__init__.py组织包结构,重要模块应编写API文档)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值