python中类名和文件名的命名规则详细解释

 更新时间:2025年10月19日 09:52:13   作者:EVE จุ๊บ  
在Python中文件名命名规则对于代码的可读性和可维护性至关重要,这篇文章主要介绍了python中类名和文件名命名规则的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

问题:是pycharm规定还是pytest规定,文件名最好和类名一致,就是比如文件名是login,类名是Login,不记得是哪里规定的了,这么规定有什么好处?

这是一个非常好的问题,也是很多 Python 初学者会困惑的地方。

简单直接的答案是:这不是 PyCharm 或 pytest 的强制规定,而是 Python 社区广泛采纳的一种最佳实践和编码风格约定。

它的核心依据是 PEP 8 – Python 编码风格指南。虽然 PEP 8 没有明文写着“文件名必须和类名一致”,但它所倡导的命名规范自然导出了这种结果。

下面我为你详细解释为什么会有这种约定以及它的好处。

1. 命名约定的来源

对于普通模块(文件)

  • PEP 8 规定模块名(即文件名)应该使用简短、全小写的名字,可以使用下划线以提高可读性。例如:my_module.py, data_loader.py
  • 类名类名应该使用驼峰命名法(CapWords convention)。例如:MyClass, DataLoader

所以,如果你有一个类叫 DataLoader,那么它所在的文件最自然、最合理的名字就是全小写的 data_loader.py

类名:DataLoader -> 文件名:data_loader.py

对于测试模块(pytest)

  • pytest 规定:pytest 为了能自动发现测试用例,对文件名和函数名有强制要求
    • 测试文件名应以 test_ 开头或以 _test.py 结尾。例如:test_login.pylogin_test.py
    • 测试类名应以 Test 开头。例如:TestLogin
    • 测试函数名应以 test_ 开头。例如:test_login_success

所以,在测试中,如果你有一个测试类叫 TestLogin,那么它所在的测试文件最合理的名字就是 test_login.py

测试类名:TestLogin -> 测试文件名:test_login.py

2. 这样做的主要好处

这种“文件名与类名强相关”的约定带来了巨大的便利:

1. 极高的可读性和可发现性

  • 一看就懂:当你看到一个类名 UserManager 时,你几乎可以立刻猜到它定义在 user_manager.py 文件里。这极大地减少了寻找代码位置的认知负担和时间成本。
  • 反向亦然:当你看到一个文件名 payment_processor.py 时,你也能很容易猜到里面主要的类应该叫 PaymentProcessor

2. 简化导入语句

导入语句会变得非常直观和整洁。你会发现导入语句和文件路径几乎有直接的映射关系。

# 从 user_manager.py 文件中导入 UserManager 类
from .user_manager import UserManager

# 从 test_login.py 文件中导入 TestLogin 类
from tests.test_login import TestLogin

如果命名不一致,导入语句就会变得很奇怪且难以理解。

3. 与 IDE 功能完美配合

现代 IDE(如 PyCharm)的强大导航和重构功能都基于这种约定。

  • Go to Definition (跳转到定义):你在代码中点击 Login 类,IDE 会精准地带你跳到 login.py 文件。
  • Rename Refactoring (重命名重构):如果你在 PyCharm 中重命名一个类(如将 Login 改为 UserLogin),IDE 会智能地询问你是否也要重命名对应的文件(将 login.py 改为 user_login.py),并自动更新所有引用该文件和类的地方。这保证了项目结构的一致性,避免了手动修改可能带来的错误。

4. 遵循社区共识,降低协作成本

当所有项目都遵循相似的约定时,任何一个新的开发者加入项目,都能凭借这种“肌肉记忆”快速上手和理解项目结构,而不需要去记忆每个项目独特的、可能很随意的命名规则。

总结

项目来源规则好处
文件名小写下划线 (如 data_loader.py)PEP 8 风格指南社区最佳实践可读性高,易于导入
类名驼峰式 (如 DataLoader)PEP 8 风格指南社区最佳实践符合面向对象编程惯例,清晰易辨
测试文件以 test_ 开头 (如 test_login.py)pytest 框架规定强制要求(为了自动发现测试)pytest 能够自动找到并运行测试用例
测试类以 Test 开头 (如 TestLogin)pytest 框架规定强制要求(为了自动发现测试)pytest 能够识别该类为测试集合

所以,回到你的例子:

  • 有一个类叫 Login,那么把它放在 login.py 文件里是一个非常好的、符合社区惯例的选择
  • 有一个测试类叫 TestLogin,那么把它放在 test_login.py 文件里是 pytest 框架的强制要求,同时也是最佳实践。

这虽然不是语法上的强制规定,但严格遵守这些约定会让你的代码更专业、更易维护、更受同事欢迎。

到此这篇关于python中类名和文件名的命名规则的文章就介绍到这了,更多相关python类名和文件名命名规则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python开发桌面小程序功能

    Python开发桌面小程序功能

    这篇文章主要介绍了Python开发一个桌面小程序功能,开发环境界面设置,功能介绍结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 一步步教你用python连接oracle数据库

    一步步教你用python连接oracle数据库

    oracle作为最强大的数据库,Python也提供了足够的支持。不过与其他数据库略有不同,下面这篇文章主要给大家介绍了关于如何使用python连接oracle数据库的相关资料,需要的朋友可以参考下
    2023-04-04
  • Python实现分割文件及合并文件的方法

    Python实现分割文件及合并文件的方法

    这篇文章主要介绍了Python实现分割文件及合并文件的方法,涉及Python针对文件的分割与合并操作相关技巧,通过自定义函数split与join实现了文件的分割与合并操作,需要的朋友可以参考下
    2015-07-07
  • python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法

    python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法

    这篇文章主要介绍了python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法,需要的朋友可以参考下
    2019-10-10
  • Django urls.py重构及参数传递详解

    Django urls.py重构及参数传递详解

    这篇文章主要介绍了Django urls.py重构及参数传递详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python对RabbitMQ的简单入门使用教程

    python对RabbitMQ的简单入门使用教程

    RabbitMq是实现了高级消息队列协议(AMQP)的开源消息代理中间件,下面这篇文章主要给大家介绍了关于python对RabbitMQ的简单入门使用,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Python使用matplotlib.pyplot as plt绘图图层优先级问题

    Python使用matplotlib.pyplot as plt绘图图层优先级问题

    这篇文章主要介绍了Python使用matplotlib.pyplot as plt绘图图层优先级问题.文章围绕主题展开详细内容需要的小伙伴可以参考一下
    2022-04-04
  • 解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...

    解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...

    下面小编就为大家带来一篇解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 解决springboot yml配置 logging.level 报错问题

    解决springboot yml配置 logging.level 报错问题

    今天小编就为大家分享一篇解决springboot yml配置 logging.level 报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 实操Python爬取觅知网素材图片示例

    实操Python爬取觅知网素材图片示例

    大家好,本篇文章介绍的是实操Python爬取觅知网素材图片示例,感兴趣的朋友赶快来看一看吧,对你有用的话记得收藏起来,方便下次浏览
    2021-11-11

最新评论