在我的项目中,我使用了某个软件包mb
,可以像这样配置它:
mb.set_useragent("**", "1.0", "**@gmail.com")
mb.set_hostname("http://sss")
现在,我要使用import mb
导入软件包,然后在使用该软件包的每个文件中进行配置,但是我希望能够一次为软件包设置以上设置,并且每次导入软件包时都要设置这些配置。
如何有效地做到这一点?我不想将其包装在函数中并返回一个对象,因为那样我将不得不做wrapp_function_name().package_capability("param")
并且看起来很丑。
答案 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")