簡體   English   中英

Python:如何在一個模塊中初始化對象並在另一個模塊中使用它

[英]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的頂層,所以你導入的第一次mod2mod1是進口的,那么mod1.cars(...)被調用時,它調用mod1.cars.__init__()

我想要什么,因為obj已經在mod2.py中初始化,因此mod3應該已經初始化了實例

就是這樣。 對於當前的流程,當然-對象不存在於流程之外(並且不在流程之間共享)

每次導入,我的意思是第一次從不同模塊導入

只要所有這些導入都在同一過程中進行,就只會為該過程創建一次mod2.obj 當然,如果您具有不同的進程,則每個進程將具有其自己的obj實例-正如我所說,對象僅在運行時存在,並且不會在進程之間共享(希望如此)。

唯一可以兩次導入同一模塊的情況是,如果您的sys.path混亂了,並允許針對兩個不同的限定名稱解析相同的模塊名稱,並且一次導入使用一個限定名稱,而另一個使用另一個限定名稱。限定名稱-但這是一種非常罕見的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM