在python中管理全局范围的类实例化

时间:2011-07-24 20:01:29

标签: python

我希望控制MyClass类的实例化时间,它需要是唯一的并且能够全局引用它

# myclass.py
class MyClass():
    def __init__(self):
        pass

    def hello(self):
        return 'world'

class MyManager():
    def __init__(self):
        self.instance = None

    def create(self):
        self.instance = MyClass

manager = MyManager

这是因为我正在使用的类在初始化时具有一些依赖性,这在模块导入时是不存在的。 (为了上面的例子,我省略了依赖)

# main.py
import myclass

myclass.manager.create

instance = myclass.manager.instance

hello = instance.hello

现在这是一个错误:

AttributeError: class MyManager has no attribute 'instance'

我是python的新手,并且大部分都是将它用于线性脚本。我错过了什么?

1 个答案:

答案 0 :(得分:3)

你永远不会打电话给myclass.manager.create(),因为你忘记了parens。添加它们。您可能也打算调用MyManager()MyClass(),以便实例化它们。