在python中,定义具有函数的模块或具有包含函数的类的模块是否更好?[关闭]


13

在我的代码中,以上两个选项中的任何一个都可以很好地工作,但是我有兴趣了解这两种方法的优缺点。

Answers:


9

老实说,这取决于您的需求。大多数情况下,功能模块将是您所需要的。

不应将Python类(imho)视为C#或C ++或Java中的类,需要逻辑上的理由将一组函数分组为更大的父类,数据结构将是一个很好的例子,直接适用于该类的一组完全一致的函数,而不是一组通用的松散收集的函数。

  • 功能模块:通用,实用程序和更多“全局”功能
  • 功能类别模块:具有相似需求,不同链表数据类型或音频处理功能或不同树类型的分组类别。

一个模块用于类似系统的整体层次结构分组,我通常将所有实用程序功能放在一个模块下,所有数据都放在另一个模块下,我的数据层和连接器放在一个更“父”类型的模块下。由于模块只是一个思维上的分组,因此它所涉及的系统类型(类或功能,实际上可能是两者的混合)就更少了,而模块下系统之间的逻辑联系则更多。


6
我不了解Python类与其他语言之间的对比。您将使用哪种语言的类具有没有逻辑原因进行分组的函数?
Guy Sirton 2013年

7

基本问题是是否需要模块/类的不同实例。python模块就像一个单例 -您始终引用同一对象,即,如果需要实例,则需要一个类。

但是,如果不需要实例,则可能仍需要将“对象”设置为初始状态。尽管使用普通模块显然可以做到这一点,但是如果初始化不仅仅是设置一些值而复杂,我建议在类的__init__方法中使用初始化代码以提高可读性。


2
可能值得指出的是,您可能正在谈论的是具有状态的事物,例如,具有全局变量的模块与具有成员变量的类。如果您的类仅具有方法但没有状态,则没有理由拥有多个实例
2013年

3
@thbusch,是的,这在需要实例时隐含。
2013年

当您谈到需要使我理解模块与类的实例时。就像如果我需要制造多辆汽车,那么一类与一个计算器模块比较合适,在该模块中,我不需要制造一堆计算器,我只需要使用该模块中的add和减去方法。
tazboy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.