簡體   English   中英

Python:在模塊函數中創建的類實例在其他模塊中不可見

[英]Python: class instance created in module function not visible from other modules

我要模塊,tools.py和env.py。 在工具模塊中,我正在做一些檢查是否存在某些文件。

根據這些檢查的結果,我只想初始化env模塊中兩個可能的類之一的實例。 我希望這些實例對象成為env模塊的一部分,因為我想從env模塊而不是從tools模塊導入環境設置。 這就是為什么我編寫了一個在env模塊內創建實例的函數的原因。

tools.py

# tools.py
import env

if file_exists == True:
    env.create_env_obj(True)
else:
    env.create_env_obj(False)

信封

# env.py

def create_env_obj(file_exists):
global se
if file_exists == True:
    print("Creating environment A")
    se = SetEnvForExistingFile()
elif file_exists == False:
    print("Creating environment B")
    se = SetEnvForNoExistingFile()

創建對象之后,我實際上可以在工具模塊中使用環境對象,但是由於env的導入是在實例創建之前完成的,所以我的IDE到處都會標記錯誤。

實例也在該函數create_env_obj的范圍內創建。 因此它對我的工具模塊不可見。 我嘗試重新加載,但沒有任何改變。

現在,問題是它實際上可以在任何地方使用,但是到處都是錯誤,這讓我覺得我在這里部署了錯誤的做法。 哪種存檔更干凈的解決方案?

嘗試這個:

# env.py
se = None
def create_env_obj(file_exists):
    global se
    if file_exists:
        print("Creating environment A")
        se = SetEnvForExistingFile()
    else:
        print("Creating environment B")
        se = SetEnvForNoExistingFile()

暫無
暫無

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

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