>>> my_object.name = 'stuff'
>>> my_str = 'name'
>>> my_object[my_str] # won't work because it's not a dictionary :)
私はmy_str
上で定義されたmy_object
の分野にどのようにアクセスすることができますか?パイソン - Accessオブジェクトは、辞書のように属性
>>> my_object.name = 'stuff'
>>> my_str = 'name'
>>> my_object[my_str] # won't work because it's not a dictionary :)
私はmy_str
上で定義されたmy_object
の分野にどのようにアクセスすることができますか?パイソン - Accessオブジェクトは、辞書のように属性
getattr(my_object, my_str)
'myobject .__ dict __ [my_str]'に対する利点は何ですか?よりよい性能 ? –
私は標準的な "It'sもっとPythonic"答えに後退することができますか?また、プライベート変数__にタップすると、独自のリスクが発生します。あなたがしようとしているのは、getattrとsetattrのためのものです。 – Tom
ありがとうございます。 –
>>> myobject.__dict__[my_str]
'stuff'
で完全に有効です。これはプロパティ、 '__slots__'、' __getattr __/__ getattribute __/__ setattr__'オーバーロード、そしておそらく他のいくつかのことであることに注意してください。 – delnan
情報ありがとうございました。あなたは 'getattr(my_object、my_str)'がパフォーマンス上も良いと思いますか? –
ここではパフォーマンスが最も心配です。そうであれば、C言語でその部分(ループ全体、多くの言語間の呼び出しを避けるため)を書き直すことができますが、このような最適化を検討する前に、許容できない減速の確かな証明が必要です。 – delnan
あなたは、一般的に__dict__
アプローチ - を行うことはできません。
getattr(myobject, my_str)
dictのようなアクセスが必要な場合は、オーバーロードされたインデックス演算子を持つクラスを定義するだけです。
btwこれはjavacript – watashiSHUN