たとえば、オブジェクトにはpersonオブジェクトという2つの属性しかありません。この例では にはファーストネームとセカンドネームしかありません。 ジェンダー属性をオンザフライで作成することは可能ですか?ありがとう。これは、動的には、Pythonオブジェクトで属性を生成することは可能ですか?
3
A
答えて
8
短い答え:はい
class Person(object):
def __init__(self):
self.first_name = 'Will'
self.second_name = 'Awesome'
my_guy = Person()
my_guy.gender = "Male"
print(my_guy.gender)
は文句を言わない「あなたが
my_guy = Person()
attr = 'secret_habit' # this could be read from file, keybrd etc.
value = 'wont tell you'
setattr(my_guy, attr, value)
print(my_guy.secret_habit)
私は得ることができ、あなたも、あなたがコードを書くときに、この属性が呼ばれているものを知っている場合はMale
2
を印刷しますあなたに教えてください
+2
'__dict__'については忘れて、' setattr'/'getattr'を使います。インスタンスディクショナリへのアクセスは脆弱です。大部分ではないかもしれないが、考慮すべき十分に一般的な多くのケース(例えば '__slots__'、古いスタイルのクラス、プロパティ、他の属性アクセスオーバーライド、場合によってはそれ以上)で失敗します。 – delnan
+0
@delan:あなたの提案通りに修正しました。 – yosukesabai
関連する問題
- 1. Python - 関数を動的に生成することは可能ですか?
- 2. レールでテストを動的に生成することは可能ですか?
- 3. SSRS RDLファイルを動的に生成することは可能ですか?
- 4. md-option要素を動的に生成することは可能ですか?
- 5. ビジュアルスタジオで動的オブジェクトにインテリセンスを提供することは可能ですか?
- 6. ケースステートメントをループで生成することは可能ですか?
- 7. オンザフライでカスタムブラケットを生成することは可能ですか?
- 8. Android:Contentviewを動的にすることは可能ですか?
- 9. Android - ビュー内で動的にクリック可能なオブジェクトを移動することは可能ですか?
- 10. Railsモデルで仮想属性を自動的に返すことは可能ですか?
- 11. ネストされたオブジェクト属性に対するレスポンスをカスタマイズすることは可能ですか?
- 12. python 3.6.1でサウンドを再生するには?これは可能ですか?
- 13. XP sysprepを生成することは可能ですか?
- 14. C#で動的オブジェクトを呼び出すことは可能ですか?
- 15. JavaFXで動的Bindings.ORを作成することは可能ですか?
- 16. d3で動的グリッド線グラフを作成することは可能ですか?
- 17. 動的Webページをキャッシュすることは可能ですか?
- 18. C++で属性指定子をテストすることは可能ですか?
- 19. XPathで属性値を設定することは可能ですか?
- 20. ASP.NET - ユーザーエージェントをオブジェクトに入れることは可能ですか?
- 21. Pythonで空のネストされた属性を捕捉することは可能ですか?
- 22. Gradle。 Kotlin - 動的(「オン・フライ」)タスクを作成することは可能ですか?
- 23. これはcygwinやdebianではないLinuxでPythonを動かすことは可能ですか?
- 24. c#クラスがboo macro.ast属性を消費することは可能ですか?
- 25. Nhibernate .Net属性マッピング。デフォルト値を設定することは可能ですか?
- 26. Pythonでローカル変数を「動的に」作成することは可能ですか?
- 27. Androidマニフェスト属性を動的に変更することはできますか?
- 28. PhpStormでゲッタとセッタを生成するときに自動的に生成されたコメントを削除することは可能ですか?
- 29. この一般的なインターフェイスを作成することは可能ですか?
- 30. タイトル属性内にリンクを置くことは可能ですか?
このアプローチでは注意が必要です: 'Person()。gender'を呼び出すと、Att ributeErrorなので、attrが存在しない場合は、キャッチするようにしてください。 – Daenyth