将整个程序包含在课堂中有什么好处?

时间:2014-07-17 06:29:58

标签: python class

有时,在查看Python代码示例时,我会遇到一个整个程序包含在自己的类中的程序,并且几乎程序的每个函数实际上都是该类的一个方法,除了'main'函数

因为这对我来说是一个相当新的概念,即使我以前见过它,我也不能轻易找到一个例子,所以我希望有人理解我的意思。

我知道如何在程序函数的其余部分之外使用类,但与自己的函数相比,以这种方式使用它们有什么好处?

此外,可以/应该使用类以这种方式构建一个没有函数调用的单独模块吗?

2 个答案:

答案 0 :(得分:2)

模块是纯函数的集合时,首选模块,即没有像模块级变量那样的共享状态。当有多个函数在共享状态下运行时,通常会使用大的

在Python脚本中,您经常会看到main函数的模式只是类的实例化并调用例如youtube-dl的方法。这是出于各种原因:

  • 可以在不混合状态的情况下实例化多个对象。使线程安全更容易。
  • 可以继承或组合类(例如,请参阅BaseHTTPRequestHandler
  • 类比构造函数,迭代支持等模块具有更多功能。

一般而言,课程提供的功能更多,但复杂性稍微增加。在一次性脚本的情况下,有些人更喜欢简单的函数esp。权衡取决于开发人员,两者都是Python中的有效选项。

答案 1 :(得分:1)

程序通常必须维护状态并在功能之间共享资源(命令行选项,dB连接等)。在这种情况下,类通常是一个更好的解决方案(wrt /可读性,可测试性和整体可维护性),而不是必须将整个上下文传递给每个函数或(更糟)使用全局状态。