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

时间:2017-04-27 14:14:03

标签: python class module readability

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

我的问题是:出于功能原因,是否需要将课程移至单独的模块,还是仅仅是为了便于阅读?我可以使用我的主模块中定义的函数执行所有相同的任务,那么如果除了可读性之外还需要什么类?

2 个答案:

答案 0 :(得分:1)

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

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

  

出于功能原因,是否需要将您的班级移至单独的模块,还是仅仅是为了便于阅读?

如果该特定类与您的模块无关,那么您可能最好将该类移动到另一个模块。当然,这不是一个有效的陈述。假设您正在编写一个相对较小的程序,并且您不需要定义大量的工具,而这些工具将在您的小程序中使用,在main模块中对您的类进行编码并不会造成任何伤害。在另一方面,您需要编写大量工具的大型应用程序中,最好将程序拆分为具有指定用途的模块myStringToolsmyMathmain和许多其他模块。使用模块和包构建程序可以增强维护。

如果你需要深入阅读有关Modular programming的内容,它会帮助你更好地理解这个想法。

答案 1 :(得分:1)

你可以随意做。如果您的类的代码很短,那么将它们全部放在主脚本中就可以了。如果它们很长,那么将它们拆分成单独的文件是一种有用的组织技术(它具有代码的额外好处,每次运行它们所使用的脚本时都不会重新编译成字节代码。

将它们放入模块中也会鼓励它们重复使用,因为它们不再与许多其他不相关的东西混在一起。

最后,它们可能很有用,因为模块是esstentially singleton对象,这意味着程序中只有一次它们是import第一次创建的。稍后import在其他模块中将只重用现有实例。这可以是一个很好的初始化方法,只需要进行一次。