每个类有一个模块(文件 .py)? [已关闭]

问题描述 投票:0回答:3

我两周前开始使用 Python 编程。我正在为每个类创建一个单独的文件(模块),就像我之前在 Java 或 C# 等语言中所做的那样。

但是现在,看到其他人的教程和代码,我意识到很多人使用相同的文件来定义多个类和主函数,但我不知道他们是否这样做,因为这只是示例或者因为它是 Python 约定或类似的东西(在同一文件中定义和分组许多类)。

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

很明显每个人都有自己的风格,但当我问的时候,我希望得到笼统的答案或者只是约定,无论如何,如果有人想告诉我他对自己风格的看法以及为什么,请随意做!

python file class module conventions
3个回答
14
投票

每个班级一个文件

不要这样做。在 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


5
投票

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


2
投票

每个文件有一个类根本没有错。 Python 并不直接针对面向对象设计,因此您可以在每个文件中使用多个类。

如果您对“正确”的方法感到困惑,我建议您阅读一些样式指南。

我建议使用 Google 的风格指南 或 Python 基金会的官方 风格指南

您还可以在PEP索引中找到更多与Python习惯用法和元分析相关的资料

© www.soinside.com 2019 - 2024. All rights reserved.