古いスタイルのクラスを使用するだけで、次のようにhasattr
機能します。
>>> class old:
... pass
...
>>> hasattr(old, '__eq__')
False
新しいスタイル クラスを使用すると、すべてのクラスに次の属性があります__eq__
。
>>> class nsc(object):
... pass
...
>>> hasattr(nsc, '__eq__')
True
これは期待される動作であり、hasattr(object, '__eq__')
も返しますTrue
。これは、すべてのリッチ比較メソッドに当てはまります。
使用できない場合、クラスがリッチ比較メソッドを実装しているかどうかを確認するにはどうすればよいhasattr
ですか? 頭に浮かぶことの 1 つは、メソッドを呼び出して、NotImplemented
例外が発生するかどうかを確認することです。しかし、これらのメソッドを呼び出すと、予期しない損害が発生する可能性があります。