マジック メソッド をオーバーライドして、 にある基本メソッドにアクセスしよう__eq__
とすると、エラーが発生します。これがバグであるはずはありませんが、確かに次のように感じます。super
object
class A(object):
def __eq__(self, other):
return super(A, self).__eq__(other)
A() == 0
# raises AttributeError: 'super' object has no attribute '__eq__'
これはobject.__eq__
存在するため直感的class A(object): pass
ではありませんが、存在しないためです。私が間違っていなければ__eq__
チェックis
に頼るので、それがここでの回避策かもしれませんが、is
代わりに使用することsuper
はミックスインフレンドリーではありません。私の場合はその方法で問題ありませんが、そうでない場合もあります。
このように機能する理由に関する提案や情報は__eq__
素晴らしいでしょう。