これはプロパティがあるかどうかを確認する唯一の方法ですか?同じことをする他の方法はありますか?pythonに属性があるかどうかを調べる代替手段はありますか?
答えて
まあ、それにアクセスしようとすると、それが存在しない場合はAttributeError
をキャッチすることができます。
try:
a.foo
except AttributeError:
...
私は多くのマルチスレッドコードで作業していませんが、これを処理するためのスレッドセーフな唯一の方法でもあります。あれは正しいですか?つまり、別のスレッドが 'hasattr(a、 'foo')'と 'a.foo'の呼び出しの間に' a.foo'を削除する可能性がありますが、これはアトミックになります。 –
ありがとうCat Plus Plus。 – shibly
あなただけのプロパティを使用して、それが存在しない場合AttributeError
例外をキャッチすることができます。しかし、hasattr
を使用することも合理的なアプローチです。
例外をキャッチして潜在的な問題は、あなたが簡単に起因するかもしれない(コードがAttributeError
を提起する属性が存在しない、そしてそれは、既存のが、あなたはそれを呼び出す際にいくつかのコードが実行されるとを区別することができないということですコード内のバグ)。あなたはまた、使用することができ
:
if 'property' in a.__dict__:
a.property
- 1. Python http.server.HTTPServerにRewriteRule/.htaccessの代替手段がありますか?
- 2. pythonに.replace()の代替手段がありますか?
- 3. Pythonでsys.exit()の代替手段がありますか?
- 4. Sensor.TYPE_ROTATION_VECTORにはドリフトがあります:代替手段はありますか?
- 5. dynamic_castにまともな代替手段がありますか
- 6. .NetにDrupalの代替手段がありますか?
- 7. ポジションにjQueryの代替手段がありますか?
- 8. ポータブルライブラリにAppDomain.GetAssembliesの代替手段がありますか?
- 9. ControlTemplateをビルドする必要はありますか?あるいは代替手段がありますか?
- 10. ネイティブアンドロイドにSharedpreferenceの代替手段はありますか?
- 11. Microsoft EdgeにXML.innerHTMLの代替手段はありますか?
- 12. NSIS ScriptにInvokeShellVerbの代替手段はありますか?
- 13. iOSにJobSchedulerの代替手段はありますか?
- 14. ポリマーに 'window.onload'の代替手段はありますか?
- 15. MATLABにgoto-statementsの代替手段はありますか?
- 16. SwiftにNSInvocationの代替手段はありますか?
- 17. TemplateControl.ParseControlより高速な代替手段はありますか?
- 18. ioutil.ReadFileより高速な代替手段はありますか?
- 19. Runtime.getRuntime()の代替手段がありますか。
- 20. C言語のgetline()の代替手段がありますか?
- 21. このコードのevalの代替手段がありますか
- 22. Pythonのstrftimeより高速な代替手段がありますか?
- 23. jQuery UIのウィジェットの代替手段はありますか?
- 24. Android用CachingHttpClientの代替手段はありますか?
- 25. foreach文の代替手段はありますか?
- 26. cprintfの代替手段はありますか?
- 27. ダイナミックストアドプロシージャの代替手段はありますか?
- 28. GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT)の代替手段はありますか?
- 29. Gigaspacesの代替手段はありますか?
- 30. ノードjs websocketの代替手段はありますか?
は何
また、このトピックの詳細については、これらの関連の質問を見てみたいことがあり'hasattr'で間違っていますか? – yak
dup? http://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python – danihp