我在2周前开始使用python进行编程。我正在为每个类创建一个单独的文件(模块),就像我之前在Java或C#等语言中所做的那样。
但是现在,看到来自其他人的教程和代码,我意识到许多人使用相同的文件来定义超过1个类和主要功能,但我不知道他们是否这样做,因为只是示例或因为它是一个python约定或类似的东西(在同一文件中定义和分组许多类)。
那么,在Python中,每个类的一个文件或同一文件中的许多类(如果它们可以按任何特定功能分组)? (如同一侧的机动车辆和另一侧的车辆)。
很明显,每个人都有自己的风格,但是当我问,我希望一般的答案或只是惯例,无论如何,如果有人想告诉我他对自己的风格和原因的看法,请随意做! ;)
每个班级一个文件
不要这样做。在Java中,您不能 - 按设计 - 在文件中有多个类。
在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
也就是说,如果你将每个类放入一个文件中,没有人会阻止你。它可能不是 Python的。
Python具有包,模块和类的概念。如果你为每个模块放一个类,那么拥有模块的优势就会消失。如果你是一个庞大的类,可以把这个类放在一个单独的文件中,但是再说一次,拥有大类是不是很好?不,它很难测试和维护。最好有更多具有特定任务的小类,并将它们逻辑分组到尽可能少的文件中。
每个文件都有一个类没有错。 Python不是直接针对面向对象的设计,因此这就是为什么你可以为每个文件放弃多个类。
如果您对“正确”的方法感到困惑,我建议您阅读一些风格指南。
我建议 谷歌的风格指南 或官员 Python基金会的风格指南
您还可以在中找到更多与Python的习语和元分析相关的资料 PEP指数