2016-12-19 8 views
1

考えるにアクセスするためのプロパティを選択:はプログラム的

import configs 

thingToLook = 'value' 

channels = configs.value 

は私が

channels = config.value 

と同等です

channels = config[thingToLook] 

ような何かを行うことができますか?

私は

channels = configs[thingToLook]

をすれば私が手:

TypeError: 'module' object has no attribute '__getitem__'

私は、文字列を経由して、それを設定することができますので、プログラムでconfigsから取得するプロパティを選択しようとしています。

+1

あなたの質問は何ですか? –

+0

質問に別の行を追加しました – Antoine

+0

'configs'とは何ですか? –

答えて

2

JavaScriptと異なり、Pythonは項目(括弧のアクセス)と属性(ドットアクセス)を区別します。あるものにアクセスするために働く構文は、(通常)他のものにアクセスするためには機能しません。

あなたは動的属性をルックアップするためにgetattr機能を使用することができます。

getattr(configs, thinkToLook) 

と、必要に応じてデフォルト値を設定し、何も見つからなかった場合:

getattr(configs, thinkToLook, False) 
+0

完璧なおかげで! – Antoine

2

config.valueconfig['value']は同じではありません。インスタンスのさまざまなメソッドを呼び出します。

config.valueは、config.__getattr__('value')と同じです。

config['value']は、config.__getitem__('value')と同じです。

詳しくはhttps://docs.python.org/2/reference/datamodel.html

+0

完璧なおかげで! – Antoine