2017-12-13 12 views
0

変数の値をクラスのオブジェクトとして使用するにはどうすればよいですか?変数の値をオブジェクトの名前として使用する

私、私はそれが

ように作ることができますどのようにクラス内のオブジェクトの名前である「B」「A」と呼ばれるクラスを持っている、と私は、変数の値を割り当てることができるようにしたい

class a(): 
    __init__(self): 

b = "foo" 

b = a() 

foo = a() 

と同じでしょうか?

+0

....何?あなたが何を言っているか理解できません。 'b = a()'は* foo = a() 'と同じ*です...' b = foo() 'を意味しますか? –

+0

私はOPが別の変数の値にちなんで命名された変数を作成したいと考えています。 –

答えて

4

この種のことを行う推奨方法は、むしろ辞書を使用することです。これと同じように:あなたはunarguably悪い習慣ですが、あなたがしなければならない場合は求めて何

b = "foo" 
myDictionnary = {} 

myDictionnary[b] = a 

print(myDictionnary["foo"]) 
1

...

これはグローバルスコープで行うことができます。あなたはglobals()辞書に新しい変数を追加する必要があります:

class a: 
    pass 

b = 'foo' 

globals()[b] = a() 

print foo 
# <__main__.a instance at 0x10282d518> 

これはまた、内部の機能を動作します:

class a: 
    pass 

b = 'foo' 

# Be careful with this. As I said, this updates the global scope 
# So "foo" can actually be accessed out of the function. 
# Furthermore, calling this function more than once will yield 
# different results as globals()['foo'] keeps getting overriden 
def some_method(): 
    globals()[b] = a() 
    print foo 
    # <__main__.a instance at 0x10282d5a8> 

some_method() 
+0

'locals()'を修正しました。[動作しません](https://ideone.com/Hv0Xwu)。投稿する前に[docs](https://docs.python.org/3/library/functions.html#locals)をお読みください。これは回答だけでなく質問にも適用されます。 – user2357112

+0

@ user2357112あなたはそれに合っています。更新された答え –

関連する問題