__int__
このようなことができるように、Python クラスのような関数をオーバーライドしたいとしましょう。
class A(object):
def __init__(self):
self.__int__ = lambda: 1
a = A()
print int(a)
このエラーメッセージを生成する代わりに、ここに「1」を出力することを期待しています
TypeError: int() 引数は、'A' ではなく、文字列または数値でなければなりません
代わりに__int__
、クラスに組み込まれたメソッドになると、期待どおりに機能します。なんで?(この問題は、二重アンダースコア関数のいずれにも存在します)