当前位置:  开发笔记 > 编程语言 > 正文

在模块和类之间进行选择

如何解决《在模块和类之间进行选择》经验,为你挑选了2个好方法。

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

    创建一个单独的appstate.py文件,其中包含带有函数的全局变量.它最初看起来不错,但似乎我遗漏了一些清晰的代码.

    在appstate.py文件中创建具有类函数的类AppState,所有其他模块都由其特定作业定义.看起来很好.但现在我必须编写更长的行,如appstate.AppState.get_user_list().而且,这些方法并没有太多相互关联.我可以创建单独的类,但这将是太多的类.

编辑:如果我使用类,我将使用classmethods.我认为不需要将类实例化为对象.



1> Jarret Hardi..:

听起来像经典的难题:-).

在Python中,如果这是最好的方法,选择使用模块没有任何肮脏或可耻.毕竟,模块,函数等实际上是语言中的一等公民,并提供许多其他编程语言仅通过使用对象提供的内省和属性.

你描述你的选择的方式,听起来有点像你在这种情况下对基于类的方法并不太疯狂.

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


+1:什么 - 真的 - 模块(带有模块属性和函数)和只有类变量和类方法的类之间的区别?没有,真的.模块预期为单例.一堂课没有这样的期望.

2> Devin Jeanpi..:

如果您将应用程序状态存储在AppState 实例中,则第二种方法与第一种方法明显不同,在这种情况下,您的投诉不适用.如果你只是在一个类中存储东西并使用静态/类方法,那么你的类与一个模块没什么区别,而实际上将它作为一个模块就是pythonic.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有