Python:每个类一个模块(文件.py)?

标签 python file class module convention

<分区>

我 2 周前开始使用 Python 编程。我正在为每个类制作一个单独的文件(模块),就像我以前用 Java 或 C# 等语言所做的那样。 但是现在,看到其他人的教程和代码,我意识到很多人使用相同的文件来定义不止 1 个类和主要功能,但我不知道他们是否那样做,因为只是示例或因为这是一个 python 约定或类似的东西(在同一个文件中定义和分组许多类)。

那么,在 Python 中,每个类对应一个文件,还是同一个文件中的多个类(如果它们可以按任何特定功能分组)? (比如一侧是机动车,另一侧是车辆)。

很明显每个人都有自己的风格,但是当我问的时候,我希望得到一般性的回答或者只是约定俗成,无论如何,如果有人想告诉我他对自己的风格的看法以及为什么,尽管去做吧! ;)

最佳答案

one file for each class

不要这样做。在 Java 中,一个文件中通常不会有多个类(当然可以 nest )。

在 Python 中,如果您将相关 类分组到一个文件中,那么您就安全了。看看 Python standard library : 许多模块在单个文件中包含多个类。

至于为什么?简而言之:可读性。我个人喜欢不必在文件之间切换来阅读相关或相似的代码。它还使导入更加简洁。

想象 socketserver.py会传播 UDPServer, TCPServer, ForkingUDPServer, ForkingTCPServer, ThreadingUDPServer, ThreadingTCPServerBaseRequestHandlerStreamRequestHandlerDatagramRequestHandler分为九个文件。你将如何导入这些?像这样?

from socketserver.tcp.server import TCPServer
from socketserver.tcp.server.forking import ForkingTCPServer
...

那是普通的开销。当您编写它时,它是开销。当你阅读它时,它是开销。这不是更容易吗?

from socketserver import TCPServer, ForkingTCPServer

也就是说,如果您将每个类都放在一个文件中,没有人会阻止您。它可能不是 pythonic .

关于Python:每个类一个模块(文件.py)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29914101/

相关文章:

python - Django 上传和处理没有数据保留的文件

python - 我什么时候会获取 block 状态设置为 False 的锁?

python - 打印和格式化实例

c++ - 在文件之间共享静态变量: namespace 与类

python - Struct.unpack 和字节对象的长度

python - Bigquery Python API 按特定字段创建分区表

php - 找不到 Xsendfile 文件

c - 在 C 中的任意数量的空格上拆分字符串

Objective-C 目录选择器 ( OSX 10.7 )

c++ - 为什么赋值运算符重载会创建一个对象的拷贝?