3
我有一个定义它Manager类的模块。我希望模块创建这个类的一个实例,并让该模块作为这个类的“全局实例”。例如:
class Manager:
def func(self):
print('stuff')
instance = Manager()
def func():
instance.func()
有没有办法让module.x返回module.instance.x? (有点像模块级属性)
更新:在this question的答案只覆盖了我的一半用例(即它不是重复的,这个问题的要求是不同的);我也需要该模块的属性也可用。例如:
class Manager:
def __init__(self):
self.x = 3
def func(self):
print('stuff')
sys.modules[__name__] = Manager()
>>> module.func
<func>
>>> module.x
3
>>> module.Manager
AttributeError
如果你不需要像'__getattr__'这样的花哨类功能,那么为什么不简单地使用模块级函数而不是方法? – yak
我需要“奇特的类功能”,例如继承/继承和创建更多实例。我知道它好像我想要一个单身人士,但我不知道。我想要一个普通类,它的模块有一个“全局实例”。 – darkfeline
在这种情况下,请考虑编写将委托给主实例的函数。您也可以简单地为每种方法执行'foo = instance.foo'。 – yak