是否有一种“pythonic”方法可以为模块使用类的实例。例如:
class MyClass:
def __init__(self):
self.my_var = "cool value"
_instance = MyClass()
def getInstance():
return _instance()
目标是通过应用程序共享大型查找类,而不是在每次导入时初始化它们。
答案 0 :(得分:3)
您可以从模块导入任何内容。类实例也不例外:
<强> file1.py 强>
class MyClass:
def __init__(self):
self.my_var = "cool value"
instance = MyClass()
<强> file2.py 强>
from file1 import instance
答案 1 :(得分:0)
如果您的实例是以某种方式动态创建的,并且您真的需要跟踪它们,则可以覆盖__new__
,如下所示:
class MyClass:
instances = []
def __new__(cls, *args, **kwargs):
my_instance = super(MyClass, cls).__new__(cls, *args, **kwargs)
MyClass.instances.append(my_instance)
return my_instance
a = MyClass()
print(MyClass.instances)