bar
次のクラス (バグのあるプロパティを持つ) が与えられた場合、プロパティが存在することを確認する最も簡単な方法は何ですか?
class Foo(object):
@property
def bar(self):
raise AttributeError('unforeseen attribute error!')
両方ともhasattr
失敗getattr
し、機能するだけdir
です:
foo = Foo()
print hasattr(foo, 'bar')
# False
try:
getattr(foo, 'bar')
print True
except AttributeError as e:
print False
# False
print 'bar' in dir(foo)
# True
私が考えることができる最善の総合的な解決策は次のとおりです。
def robust_hasattr(obj, attr):
return hasattr(obj, attr) or attr in dir(obj)
より良い方法はありますか?