Python 是否有理由在单独的模块上创建类?

Python 是否有理由在单独的模块上创建类?,python,class,module,readability,Python,Class,Module,Readability,随着我对Python的进一步了解,我开始进入类的领域。我一直在阅读如何正确调用类以及如何导入模块或包.module,但我想知道是否真的需要这样做 我的问题是:将类移动到一个单独的模块是出于功能原因还是仅仅为了可读性?我可以在我的主模块中使用定义的函数执行所有相同的任务,因此,如果类在可读性之外,那么类需要什么呢?模块是提供封装的结构化工具。换句话说,模块是将逻辑和数据组合到模块本身的一个隔间中的结构。编写模块代码时,应保持一致。要使模块保持一致,您必须定义其目的:我的模块是否提供工具?什么类型的

随着我对Python的进一步了解,我开始进入
类的领域。我一直在阅读如何正确调用类以及如何导入
模块
包.module
,但我想知道是否真的需要这样做


我的问题是:将类移动到一个单独的模块是出于功能原因还是仅仅为了可读性?我可以在我的主模块中使用定义的函数执行所有相同的任务,因此,如果类在可读性之外,那么类需要什么呢?

模块是提供封装的结构化工具。换句话说,模块是将逻辑和数据组合到模块本身的一个隔间中的结构。编写模块代码时,应保持一致。要使模块保持一致,您必须定义其目的:我的模块是否提供工具?什么类型的工具?弦乐工具?数字工具

例如,假设您正在编写一个处理数字的程序。通常,您会使用内置的
math
模块,出于某些特殊目的,您可能需要编写一些函数和类,根据需要处理数字。如果您阅读
math
builtin模块的文档,您会发现
math
定义了与数学相关的类和函数,但没有处理字符串的类或函数。例如,这就是内聚性——统一了模块的用途。请记住,最大化内聚,最小化耦合。也就是说,当您保持模块的统一性时,就不太可能依赖于其他模块

出于功能上的原因,是否需要将类移动到单独的模块中,还是仅仅为了可读性

如果特定的类与您的模块不相关,那么您最好将该类移动到另一个模块。当然,这不是一个始终有效的声明。假设您正在编写一个相对较小的程序,并且实际上不需要定义将在小程序中使用的大量工具,那么在
main
模块中对类进行编码一点也不要紧。另一方面,在需要编写数十种工具的大型应用程序中,最好将程序拆分为具有特定用途的模块、
myStringTools
myMath
main
和许多其他模块。使用模块和软件包构建程序可以增强维护


如果您需要更深入地阅读,它将帮助您更好地掌握这个想法。

模块是提供封装的结构化工具。换句话说,模块是将逻辑和数据组合到模块本身的一个隔间中的结构。编写模块代码时,应保持一致。要使模块保持一致,您必须定义其目的:我的模块是否提供工具?什么类型的工具?弦乐工具?数字工具

例如,假设您正在编写一个处理数字的程序。通常,您会使用内置的
math
模块,出于某些特殊目的,您可能需要编写一些函数和类,根据需要处理数字。如果您阅读
math
builtin模块的文档,您会发现
math
定义了与数学相关的类和函数,但没有处理字符串的类或函数。例如,这就是内聚性——统一了模块的用途。请记住,最大化内聚,最小化耦合。也就是说,当您保持模块的统一性时,就不太可能依赖于其他模块

出于功能上的原因,是否需要将类移动到单独的模块中,还是仅仅为了可读性

如果特定的类与您的模块不相关,那么您最好将该类移动到另一个模块。当然,这不是一个始终有效的声明。假设您正在编写一个相对较小的程序,并且实际上不需要定义将在小程序中使用的大量工具,那么在
main
模块中对类进行编码一点也不要紧。另一方面,在需要编写数十种工具的大型应用程序中,最好将程序拆分为具有特定用途的模块、
myStringTools
myMath
main
和许多其他模块。使用模块和软件包构建程序可以增强维护


如果你需要更深入地阅读,它将帮助你更好地掌握这个想法。

你可以随心所欲。如果类的代码很短,那么将它们全部放在主脚本中就可以了。如果它们很长,那么将它们分割成单独的文件是一种有用的组织技术(这具有代码的附加优点,不会在每次运行它们所使用的脚本时重新编译成字节码)

将它们放在模块中也鼓励了它们的重用,因为它们不再与许多其他无关的东西混合在一起


最后,它们可能很有用,因为模块实际上是单例对象,这意味着在程序中只有一个实例,它是在第一次
import
ed时创建的。以后在其他模块中
import
s只会重用现有实例。这是一种很好的初始化方法,只需完成一次。

您可以随心所欲。如果类的代码很短,将它们全部放在主脚本中就可以了。如果它们很长,则将它们拆分为单独的文件是一种有用的组织技术(这增加了代码的好处,在每次运行脚本时,不会将它们重新编译为字节码

将它们放在模块中也鼓励了它们的重用,因为它们不再与许多其他无关的东西混合在一起

最后,它们可能很有用,因为模块