私はPythonでプログラミングしています。これを文字列(別の文字列で連結)として渡せるように、オブジェクトに与えた名前にアクセスする必要があります。Pythonで与えられた変数の名前にアクセスするにはどうすればいいですか?
私はこれを行う必要がある理由は、私が使用しているプログラムがグローバル(私の場合は辞書です)を作成することを強制し、一般的にいくつかの異なるオブジェクト(それぞれ例えば、オブジェクト1は、0と1とラベル付けされた長さ2(私の場合は2つのニューロンを示す)であり、それぞれに4つのプロパティーa、b、c、dがあります。 "dictionary filetree"これらのプロパティのうちオブジェクト1とオブジェクト2の両方が同じクラスの2つのインスタンスであるため、最初のレベルのキーを 'NAME1_0'、 'NAME1_1'、 'NAME2_0'、 'NAME2_1'に変更する必要があります。
def Init(neuron,input):
#Initialises the neuron group, arguements are neuron (neurongroup) and input (neurongroup)
global dict
dict={}
for x in range(0,len(neuron)):
neuron[x].L=0
neuron[x].G=0
neuron[x].ron=1/period
neuron[x].roff=1/period
dict[x]={'tau_on':0.5,
'Non_off':neuron[x].roff*0.5,
'Non_off':neuron[x].ron*0.5,
'Ni_on':ones(len(input))*qon*0.5,
'Ni':ones(len(input))*qoff*0.5+ones(len(input))*qon*0.5,
'p_current':0,
'p_previous':0,
'my_tau_on':[],
'my_Non_off':[],
'my_Noff_on':[],
'my_Ni_on':[],
'my_Ni':[],
'my_p_on':[],
'my_ron':[],
'my_roff':[],
'my_theta':[],
'my_weights':[],
'my_record_times':[]}
dict['%s' % x, neuron]=dict.pop(x)
は、オブジェクトに割り当てられた名前ではなく、オブジェクト自体の名前を与えるため、機能しません。私の問題
NAME1=4
def func(x): #creates string of 'NAME1'
print 'x'
func(NAME1)
#output='NAME1'
を「より良い方法があるに違いありません」。 'func(NAME1)'では、 'NAME1'という式が最初に評価されてから*結果の値*が' func'関数に渡され、 'x'パラメータに代入されることに注意してください。 –
dictはキーワードです。名前として使用すると、dictオブジェクトのプロパティがオーバーライドされます –
Neuronクラスに '.name'属性を追加するだけの理由はありますか?ところで、Pythonistはこの 'range(len(...))'構造に目を向けます;シーケンスを直接反復するだけです。あなたが本当に本当にインデックスを必要とするなら(ほとんどの場合はそうではありません)、それが '列挙'の目的です。 –