[英]Python: How can I initialise object in one module and use it in another
我的設置:mod1.py:
class cars:
def __init__(self,x,y,z):
self.x = x
mod2.py:
import mod1
obj = mod1.cars(x,y,z)
mod3.py
from mod2 import obj
現在,發生的是當我在汽車的mod3.py
init方法中導入obj時正在執行。 我想要什么,因為obj已在mod2.py
初始化, mod2.py
mod3應該已經初始化了實例,而不創建新實例。 我如何在python中做到這一點
現在,發生的是當我在汽車的mod3.py init方法中導入obj時正在執行。
當然是,這就是您告訴python要做的。 第一次導入模塊(在給定過程中)時,將執行頂層的所有語句。 創建obj
在模2的頂層,所以你導入的第一次mod2
, mod1
是進口的,那么mod1.cars(...)
被調用時,它調用mod1.cars.__init__()
我想要什么,因為obj已經在mod2.py中初始化,因此mod3應該已經初始化了實例
就是這樣。 對於當前的流程,當然-對象不存在於流程之外(並且不在流程之間共享)
每次導入,我的意思是第一次從不同模塊導入
只要所有這些導入都在同一過程中進行,就只會為該過程創建一次mod2.obj
。 當然,如果您具有不同的進程,則每個進程將具有其自己的obj
實例-正如我所說,對象僅在運行時存在,並且不會在進程之間共享(希望如此)。
唯一可以兩次導入同一模塊的情況是,如果您的sys.path
混亂了,並允許針對兩個不同的限定名稱解析相同的模塊名稱,並且一次導入使用一個限定名稱,而另一個使用另一個限定名稱。限定名稱-但這是一種非常罕見的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.