Django / Python:在项目范围内使用configs导入软件包

时间:2018-06-27 10:33:54

标签: python

在我的项目中,我使用了某个软件包mb,可以像这样配置它:

mb.set_useragent("**", "1.0", "**@gmail.com")
mb.set_hostname("http://sss")

现在,我要使用import mb导入软件包,然后在使用该软件包的每个文件中进行配置,但是我希望能够一次为软件包设置以上设置,并且每次导入软件包时都要设置这些配置。

如何有效地做到这一点?我不想将其包装在函数中并返回一个对象,因为那样我将不得不做wrapp_function_name().package_capability("param")并且看起来很丑。

1 个答案:

答案 0 :(得分:1)

您可以使用单例类包装器。简而言之,在单例设计模式中,一个类中将只有一个实例,而每次实例化该类时,它将返回该实例。永远做一次。这样。

class SingletonMb:
instance = None
def __new__(cls, *args, **kwargs):
    if not cls.instance:
        cls.instance = mb
        cls.instance.set_useragent("**", "1.0", "**@gmail.com")
        cls.instance.set_hostname("http://sss")
        return cls.instance
    else:  
        return cls.instance

,并且每当您要使用配置的mb时,都可以使用SingletonMb()来引用由mb构成的单个配置对象。并使用如下包装功能:

configuredMb = SingletonMb()

configuredMb.package_capability("param")