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

Dru*_*ass 14 python convention module class file

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

那么,在Python中,每个类的一个文件或同一文件中的许多类(如果它们可以按任何特定功能分组)?(如同一侧的机动车辆和另一侧的车辆).

很明显,每个人都有自己的风格,但是当我问,我希望一般的答案或只是惯例,无论如何,如果有人想告诉我他对自己的风格和原因的看法,请随意做!;)

mik*_*iku 9

每个班级一个文件

不要这样做.在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
...
Run Code Online (Sandbox Code Playgroud)

这是明显的开销.当你写它时,它是开销.当你阅读它时,这是开销.这不容易吗?

from socketserver import TCPServer, ForkingTCPServer
Run Code Online (Sandbox Code Playgroud)

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

  • 但为什么?我的意思是,为每个类创建一个文件有什么问题,或者为什么在同一个文件中定义很多类没什么问题呢? (2认同)
  • 我也是用C++做的,我把所有相关的类放在同一个文件中.打开的文件越少,包含的内容越少,找到我想要的类/文件的时间就越少. (2认同)

Dan*_*iel 5

Python 有包、模块和类的概念。如果每个模块放置一个类,那么拥有模块的优势就消失了。如果你有一个很大的类,那么将这个类放在一个单独的文件中可能没问题,但是话又说回来,有一个大的类好吗?不,很难测试和维护。最好有更多具有特定任务的小类,并将它们逻辑地分组到尽可能少的文件中。