-1
あるファイルから別のファイルのクラスに文字列を使って変数にアクセスしたい。他のスコープの文字列を使って変数にアクセスする方法は?
ここに私のコードです。
ファイルa.py
:
aa = 12
m = test('aa')
ファイルclass.py
:
class test:
def __init__(self,string):
try:
self.variable = globals()[string]
except KeyError:
print('there is no variable named ' + string)
test.py
上記のコードは、配列、文字列 'blrblrという名前の変数が存在しない' を返します。私は、Pythonがレキシカルスコープを持っていれば、test()
クラスが最初に呼び出されるスコープは'aa'
と同じスコープでなければならないと思います。これをどうすれば解決できますか?
'' globals'では 'class.py'が検索すると思いますか?これは、基本的には 'globals()'(または 'locals()'など)を実稼働コードで見ることはありません。あなたはほぼ確実に[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)を持っています。 – TigerhawkT3
'class test'のレキシカルスコープは' a.py'ではなく 'class.py'ですので、' a.py'の変数は見えません。 – tdelaney
オフトピック:「class」はPythonキーワードなので、 'import class'を実行することができないため、モジュールに' class.py'をインポートする名前を付けたいとは思わないでしょう。 – martineau