4

在 python 脚本顶部为程序声明配置变量的标准方法是什么?这些在整个程序中用于多个类和函数。是最好的方法:

  1. 使用配置选项创建混合字典,并将它们传递给需要它们的任何类。缺点:这需要传递额外的属性。例如:

    config = {'parseTags': {'title','font','p'},    
        'name': 'steve',                
        'logFrequencies': 10,               
        'print_rate': False  
        }
    

     

    newCustomObject = CustomClass(config)
    customfunction(config)
    print 'hi',config['name']
    
  2. 在文件开头创建全局变量并在整个程序中调用它们。缺点:破坏了类的封装。

  3. 别的东西。

这样做的最pythonic方式是什么?

4

3 回答 3

4

对于单个文件(模块)中使用的常量,我通常只是在顶部声明全局变量。这不会以任何有意义的方式失去封装(这与将这些常量放在每个类都继承自的基类中没有什么不同)。

django 配置系统提供了一种创建共享常量的好方法:您创建一个模块,配置系统从中创建一个只读对象,公开模块的成员。

于 2012-06-26T14:44:22.973 回答
4

好吧,选项1与选项2实际上并没有那么大的区别。选项 1 中的字典本身是全局的,字典中的值是硬编码的。

我不知道最 Pythonic 的方法是什么,但我会在一个单独的配置文件中提取配置并使用 Python 的标准ConfigParser模块来读取它。

于 2012-06-26T14:45:00.570 回答
1

当使用类并且配置选项作为其成员(不是实例成员)访问时,我发现它最易读,即:

class config:
    option = 3

# code code code
foo = config.opt

然后,如果它变大,您可以轻松地将其从文件中放入模块中,然后执行import config from config.

于 2012-06-26T14:46:19.710 回答