Python如何导入类的实例

3 投票
1 回答
52 浏览
提问于 2025-04-14 15:39

我想了解一下在Python中导入模块是怎么回事。假设我有一个叫做foo.py的模块,里面有一个这样的类:

class Foo: 
    def __init__(self, *args, **kwargs): 
        ... 


foo = Foo() 

现在,我想在其他模块中导入这个类。

每次导入的时候,它会使用同一个实例吗?还是说每次导入都会创建不同的实例?另外,直接在模块中实例化这个类是不是一个好方法,还是说更好直接导入Foo类,然后在需要的模块里创建实例(因为很明显,这个类不需要任何参数)?

1 个回答

2

以常规方式导入它:
from foo import Foo

如果这是第一次导入,foo.py 里的代码会被执行,里面的 classdef 语句会生成供解释器使用的字节码。我们会把这个信息记录在 sys.modules 里。

之后再导入的时候,就会利用之前的缓存,这样就不用重复做那些计算工作了。当 baz.py 和 qux.py 需要导入 foo 模块时,它们会直接得到缓存的结果,也就是之前生成的那个 Foo 类的字节码。

总结一下:你只会得到这个类的一个实例。

撰写回答