Python如何导入类的实例
我想了解一下在Python中导入模块是怎么回事。假设我有一个叫做foo.py
的模块,里面有一个这样的类:
class Foo:
def __init__(self, *args, **kwargs):
...
foo = Foo()
现在,我想在其他模块中导入这个类。
每次导入的时候,它会使用同一个实例吗?还是说每次导入都会创建不同的实例?另外,直接在模块中实例化这个类是不是一个好方法,还是说更好直接导入Foo
类,然后在需要的模块里创建实例(因为很明显,这个类不需要任何参数)?
1 个回答
2
以常规方式导入它:
from foo import Foo
如果这是第一次导入,foo.py 里的代码会被执行,里面的 class
和 def
语句会生成供解释器使用的字节码。我们会把这个信息记录在 sys.modules
里。
之后再导入的时候,就会利用之前的缓存,这样就不用重复做那些计算工作了。当 baz.py 和 qux.py 需要导入 foo
模块时,它们会直接得到缓存的结果,也就是之前生成的那个 Foo
类的字节码。
总结一下:你只会得到这个类的一个实例。