2012-01-27 10 views

答えて

18
getattr(my_object, my_str) 

More on getattr.

+0

'myobject .__ dict __ [my_str]'に対する利点は何ですか?よりよい性能 ? –

+3

私は標準的な "It'sもっとPythonic"答えに後退することができますか?また、プライベート変数__にタップすると、独自のリスクが発生します。あなたがしようとしているのは、getattrとsetattrのためのものです。 – Tom

+0

ありがとうございます。 –

1
>>> myobject.__dict__[my_str] 
'stuff' 
+2

で完全に有効です。これはプロパティ、 '__slots__'、' __getattr __/__ getattribute __/__ setattr__'オーバーロード、そしておそらく他のいくつかのことであることに注意してください。 – delnan

+0

情報ありがとうございました。あなたは 'getattr(my_object、my_str)'がパフォーマンス上も良いと思いますか? –

+2

ここではパフォーマンスが最も心配です。そうであれば、C言語でその部分(ループ全体、多くの言語間の呼び出しを避けるため)を書き直すことができますが、このような最適化を検討する前に、許容できない減速の確かな証明が必要です。 – delnan

1

あなたは、一般的に__dict__アプローチ - を行うことはできません。

getattr(myobject, my_str) 

dictのようなアクセスが必要な場合は、オーバーロードされたインデックス演算子を持つクラスを定義するだけです。