4

可能重复:模块上的
getattr

我有一个模块,它在其中定义了一个 Manager 类。我希望该模块创建此类的一个实例并将该模块用作此类的“全局实例”。例如:

class Manager:

    def func(self):
        print('stuff')

instance = Manager()

def func():
    instance.func()

有没有办法让 module.x 返回 module.instance.x?(有点像模块级属性)

更新:这个问题的答案只涵盖了我用例的一半(即,它不是重复的,该问题所问的是不同的);我还需要模块的属性也可用。例子:

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
4

1 回答 1

0

为什么没有Manager'__getattr__返回模块级对象?

def __getattr__(self, key):
    try:
        return globals()[key]
    except KeyError:
        raise AttributeError(key)
于 2012-09-30T04:17:46.970 回答