我两周前开始使用 Python 编程。我正在为每个类创建一个单独的文件(模块),就像我之前在 Java 或 C# 等语言中所做的那样。
但是现在,看到其他人的教程和代码,我意识到很多人使用相同的文件来定义多个类和主函数,但我不知道他们是否这样做,因为这只是示例或者因为它是 Python 约定或类似的东西(在同一文件中定义和分组许多类)。
那么,在Python中,每个类一个文件,或者同一文件中的多个类(如果它们可以按任何特定功能分组)? (就像一侧是机动车辆,另一侧只是车辆)。
很明显每个人都有自己的风格,但当我问的时候,我希望得到笼统的答案或者只是约定,无论如何,如果有人想告诉我他对自己风格的看法以及为什么,请随意做!
每个班级一个文件
不要这样做。在 Java 中,一个文件中通常不会有多个类(当然可以 nest)。
在Python中,如果将相关类分组在一个文件中,那么就安全了。看一下 Python 标准库:许多模块在单个文件中包含多个类。
至于为什么?简而言之:可读性。我个人喜欢不必在文件之间切换来读取相关或类似的代码。它还使导入更加简洁。
想象 socketserver.py 会将
UDPServer
, TCPServer
, ForkingUDPServer
, ForkingTCPServer
, ThreadingUDPServer
, ThreadingTCPServer
, BaseRequestHandler
, StreamRequestHandler
, DatagramRequestHandler
分成九个文件。您将如何导入这些?像这样吗?
from socketserver.tcp.server import TCPServer
from socketserver.tcp.server.forking import ForkingTCPServer
...
这很简单。当你写它的时候,这是开销。当你阅读它时,这是开销。这不是更容易吗?
from socketserver import TCPServer, ForkingTCPServer
也就是说,如果您将每个类放入一个文件中,没有人会阻止您。它可能不是pythonic。
Python有包、模块和类的概念。如果每个模块放置一个类,那么拥有模块的优势就消失了。如果你有一个很大的类,那么将这个类放在一个单独的文件中可能没问题,但是话又说回来,有一个大的类好吗?不,很难测试和维护。最好有更多具有特定任务的小班,并将它们逻辑地分组到尽可能少的文件中。
每个文件有一个类根本没有错。 Python 并不直接针对面向对象设计,因此您可以在每个文件中使用多个类。
如果您对“正确”的方法感到困惑,我建议您阅读一些样式指南。
我建议使用 Google 的风格指南 或 Python 基金会的官方 风格指南