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

时间:2013-01-22 19:09:18

标签: python

在我的代码中,上述两个选项中的任何一个都同样有效,但我有兴趣找出两种方法的优缺点。

2 个答案:

答案 0 :(得分:6)

如果函数是完全无状态的,那么具有函数的模块可以正常工作并且更简单。

另一方面,如果涉及到状态,通常最好将该状态封装在一个类中,并通过成员函数提供功能。

答案 1 :(得分:1)

首先,python中的每一个东西都是一个对象,因此,在使用函数而不是类的性能方面没有太大差异,反之亦然。

如果您是初学者,那么我建议使用带有功能的模块,因为它更容易,更直接。

这种技术的缺点是你可能在同一个模块中有很多功能,这使得在心理上更难以跟踪和记住哪些模块中的功能

如果您熟悉使用类,它将提供封装的功能(数据/属性+方法/逻辑),并将所有逻辑相关的东西放在一个容器(类)中,那么您可以从这里开始。 / p>

您可以通过添加以下内容来自定义您希望类在代码中进行交互的方式:元类,描述符和所有python特殊函数,它们可以覆盖类中每个部分的默认行为。

使用类可以帮助您更好地逻辑地表示现实世界中的问题,例如:你可以说我有一个机器类,用数据/属性描述它的所有属性/规范,并定义它的行为,接受输入,并用方法产生输出。当您编写新协议或标准时,也会发生同样的事情,使用可以使用逻辑实体/容器描述其中每个类的类来表示其组件/输入/输出/行为更容易。

同样的课程更适合团队合作,你不会自己编写所有内容,必须有一个项目的蓝图,这个蓝图应该转换为更小的块,输入和输出;在这种情况下,最好使用类。