在我的应用程序中,我必须维护一些全局应用程序状态和全局应用程序范围的方法,如当前连接的用户,答案总数,创建应用程序配置文件等.有两个选项:
创建一个单独的appstate.py文件,其中包含带有函数的全局变量.它最初看起来不错,但似乎我遗漏了一些清晰的代码.
在appstate.py文件中创建具有类函数的类AppState,所有其他模块都由其特定作业定义.看起来很好.但现在我必须编写更长的行,如appstate.AppState.get_user_list().而且,这些方法并没有太多相互关联.我可以创建单独的类,但这将是太多的类.
编辑:如果我使用类,我将使用classmethods.我认为不需要将类实例化为对象.
听起来像经典的难题:-).
在Python中,如果这是最好的方法,选择使用模块没有任何肮脏或可耻.毕竟,模块,函数等实际上是语言中的一等公民,并提供许多其他编程语言仅通过使用对象提供的内省和属性.
你描述你的选择的方式,听起来有点像你在这种情况下对基于类的方法并不太疯狂.
我不知道您是否使用过Django框架,但如果没有,请查看有关如何处理设置的文档.这些是应用程序范围的,它们在模块中定义,并且可在全球范围内使用.它解析选项并在全球范围内公开它们的方式非常优雅,您可能会发现这种方法可以满足您的需求.
如果您将应用程序状态存储在AppState 实例中,则第二种方法与第一种方法明显不同,在这种情况下,您的投诉不适用.如果你只是在一个类中存储东西并使用静态/类方法,那么你的类与一个模块没什么区别,而实际上将它作为一个模块就是pythonic.