python - 在模块和类之间进行选择

标签 python oop module

在我的应用程序中,我必须维护一些全局应用程序状态和全局应用程序范围的方法,例如当前连接的用户、答案总数、创建应用程序配置文件等。有两个选项:

  1. 创建一个单独的 appstate.py 文件,其中包含全局变量和函数。最初看起来不错,但我的代码似乎缺少一些东西

  2. 在 appstate.py 文件中创建一个具有类函数的类 AppState,所有其他模块已由其特定作业定义。这看起来不错。但是现在我必须写更长的行,比如 appstate.AppState.get_user_list()。而且,这些方法彼此之间并没有太大的关系。我可以创建单独的类,但那会是太多的类。

编辑:如果我使用类,我将使用类方法。我认为没有必要将类实例化为对象。

最佳答案

听起来像是经典难题:-)。

在 Python 中,如果这是最好的方法,那么选择使用模块并没有什么肮脏或可耻的。毕竟,模块、函数等实际上是语言中的一等公民,并且提供了许多其他编程语言仅通过使用对象才能提供的内省(introspection)和属性。

按照您描述选项的方式,在这种情况下,您似乎对基于类的方法并不太疯狂。

我不知道您是否使用过 Django 框架,但如果没有,请查看有关它如何处理设置的文档。这些是应用程序范围的,它们在一个模块中定义,并且它们在全局范围内可用。它解析选项并在全局范围内公开它们的方式非常优雅,您可能会发现这种方法可以激发您的需求。

关于python - 在模块和类之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/600190/

相关文章:

php - 用于将一种数据格式转换为另一种数据格式的 OOP 模式

java - 如何开始使用 Java 模块?

python - Python 有包/模块管理系统吗?

python - 根据其他列表的值将列表映射到字典

oop - 两个 child 类(class)是否可以一起工作

python - Django - def __unicode__(self) 中的语法错误

javascript - 使用原型(prototype)时如何引用父对象?

object - Prolog:覆盖谓词和使用它之间的区别

python - 如何使用 python 从文件中读取 "start"和 "end"标志之间的行

Python-将元组值添加到字典中的重复键