1

他の .py ファイルからグローバルをどのように継承しますか?

例:
globals.py

test = 'testValue'

index.py

from globals import *

def setGlobals():
    global test
    test = 'new Value' # Setting new value to project global  

setGlobals()

help.py

from globals import *
print test # Should print out 'new Value', but it prints 'testValue'

別のファイルによって設定され、他のファイルでも使用される定数とグローバル変数でいっぱいの 1 つのファイルが必要です。この例では、グローバル変数testに新しい値を設定しindex.py、 で新しい値を使用したいと考えていますhelp.py。Pythonに間違ったアプローチを使用していますか? ありがとうございました。

編集: イベントのシーケンスは例と同じです。たとえば、最初にインポートし、新しい値を設定してから、別のファイルから新しく設定した値を出力してみます。

4

2 に答える 2

1

Python モジュールではオブジェクトです。インポートを行う場合、1 つのモジュールの属性を現在のモジュールにコピーし、場合によっては名前を変更します。ただし、これは値をコピーするだけです (より具体的には、値による参照をコピーします)。インポートされたモジュールが後で変更された場合、コピーは変更されません。考えられるアプローチの 1 つは、2 番目のモジュールでグローバルをプロパティとして定義することですが、それが機能するかどうかはわかりません。

しかし、あなたがやろうとしていることはとにかくひどいデザインです。どこでもグローバル値にアクセスして変更する必要がある理由を再考する必要があります。コードをリファクタリングして、残っているものを依存性注入で置き換えてみてください。たとえば、globals モジュールを、必要な人に渡すことができる構成オブジェクトに置き換えます。

于 2012-08-30T11:45:54.017 に答える