1. ホーム
  2. python

[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法

2022-03-17 08:42:41

質問

Pythonで、あるオブジェクトがある属性を持っているかどうかを判断する方法はありますか? 例えば

>>> a = SomeClass()
>>> a.someProperty = value
>>> a.property
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: SomeClass instance has no attribute 'property'

をどのように判断するのですか? a は属性 property を使用する前に、それを使用しますか?

解決方法は?

試す hasattr() :

if hasattr(a, 'property'):
    a.property

参照 zweiterlindeの回答 許しを請うことについて良いアドバイスをしています。とてもピトニックなアプローチですね

Pythonの一般的なプラクティスは、そのプロパティがほとんどの時間そこにある可能性がある場合、単にそれを呼び出して例外を伝播させるか、try/exceptブロックでそれをトラップすることです。これはおそらく hasattr . もし、そのプロパティが常に存在するわけではない場合や、確信が持てない場合には hasattr の方が、例外ブロックに何度も陥るより速いでしょう。