是否有理由在单独的模块上创建 类?
Is there a reason to create classes on seperate modules?
随着我对 Python 的了解越来越多,我开始进入 classes
的领域。我一直在阅读如何正确调用 class 以及如何导入 module
或 package.module
但我想知道是否真的需要这样做。
我的问题是:是否出于功能原因需要将 class 移动到单独的模块,还是仅仅是为了提高可读性?我可以使用我的主模块中定义的函数执行所有相同的任务,那么 class 如果有任何可读性之外的需求是什么?
模块是提供封装的结构化工具。换句话说,模块是将您的逻辑和数据组合到模块本身中的一个隔间中的结构。当你编写一个模块时,你应该保持一致。要使模块保持一致,您必须定义其用途:我的模块是否提供工具?什么类型的工具?字符串工具?数值工具...?
例如,假设您正在编写一个处理数字的程序。通常,您会使用内置 math
模块,并且出于某些特殊目的,您可能需要编写一些函数和 classes 来根据您的需要处理您的数字。如果您阅读 math
内置模块的文档,您会发现 math
定义了 classes 与数学相关的广告函数,但没有 classes 或处理字符串的函数例如,这就是凝聚力——统一模块的目的。请记住,最大化内聚,最小化耦合。也就是说,当你保持你的模块统一时,你就不太可能依赖于其他模块。
Is it required to move your Class to a separate module for a functional reason or is it solely for readability?
如果那个特定的 class 与您的模块无关,那么您最好将那个 class 移动到另一个模块。当然,这不是一直有效的陈述。假设你正在编写一个相对较小的程序并且你真的不需要定义大量你将在你的小程序中使用的工具,在你的 main
模块中编写你的 class 不需要一点都不疼。另一方面,在需要编写数十个工具的大型应用程序中,最好将程序拆分为具有特定用途的模块,myStringTools
、myMath
、main
和许多其他模块。使用模块和包来构建程序可以增强维护。
如果您需要深入阅读 Modular programming,它会帮助您更好地理解这个想法。
你想怎样就怎样怎样。如果 类 的代码很短,将它们全部放在主脚本中就可以了。如果它们很长,那么将它们拆分成单独的文件是一种有用的组织技术(其中的代码具有额外的好处,每次使用它们的脚本是 运行 时都不会重新编译成字节码.
将它们放在模块中也鼓励它们的重用,因为它们不再与许多其他不相关的东西混在一起。
最后,它们可能很有用,因为模块本质上是单例对象,这意味着它们在您的程序中只有一次实例,它是在第一次 import
ed 时创建的。稍后在其他模块中的 import
s 将只重用现有实例。这是进行一次初始化的好方法。
随着我对 Python 的了解越来越多,我开始进入 classes
的领域。我一直在阅读如何正确调用 class 以及如何导入 module
或 package.module
但我想知道是否真的需要这样做。
我的问题是:是否出于功能原因需要将 class 移动到单独的模块,还是仅仅是为了提高可读性?我可以使用我的主模块中定义的函数执行所有相同的任务,那么 class 如果有任何可读性之外的需求是什么?
模块是提供封装的结构化工具。换句话说,模块是将您的逻辑和数据组合到模块本身中的一个隔间中的结构。当你编写一个模块时,你应该保持一致。要使模块保持一致,您必须定义其用途:我的模块是否提供工具?什么类型的工具?字符串工具?数值工具...?
例如,假设您正在编写一个处理数字的程序。通常,您会使用内置 math
模块,并且出于某些特殊目的,您可能需要编写一些函数和 classes 来根据您的需要处理您的数字。如果您阅读 math
内置模块的文档,您会发现 math
定义了 classes 与数学相关的广告函数,但没有 classes 或处理字符串的函数例如,这就是凝聚力——统一模块的目的。请记住,最大化内聚,最小化耦合。也就是说,当你保持你的模块统一时,你就不太可能依赖于其他模块。
Is it required to move your Class to a separate module for a functional reason or is it solely for readability?
如果那个特定的 class 与您的模块无关,那么您最好将那个 class 移动到另一个模块。当然,这不是一直有效的陈述。假设你正在编写一个相对较小的程序并且你真的不需要定义大量你将在你的小程序中使用的工具,在你的 main
模块中编写你的 class 不需要一点都不疼。另一方面,在需要编写数十个工具的大型应用程序中,最好将程序拆分为具有特定用途的模块,myStringTools
、myMath
、main
和许多其他模块。使用模块和包来构建程序可以增强维护。
如果您需要深入阅读 Modular programming,它会帮助您更好地理解这个想法。
你想怎样就怎样怎样。如果 类 的代码很短,将它们全部放在主脚本中就可以了。如果它们很长,那么将它们拆分成单独的文件是一种有用的组织技术(其中的代码具有额外的好处,每次使用它们的脚本是 运行 时都不会重新编译成字节码.
将它们放在模块中也鼓励它们的重用,因为它们不再与许多其他不相关的东西混在一起。
最后,它们可能很有用,因为模块本质上是单例对象,这意味着它们在您的程序中只有一次实例,它是在第一次 import
ed 时创建的。稍后在其他模块中的 import
s 将只重用现有实例。这是进行一次初始化的好方法。