str()
オーバーロードされたメソッドを持つオブジェクトを呼び出すと、__getattribute__
それを使用していないようで、代わりに__str__
直接呼び出します。変更する必要がある他の機能や、それを使用する方法はあります__getattribute__
か? 直接オーバーロード__str__
すると、期待どおりに動作しますが、それは私のニーズには理想的ではありません。
class A(object):
def __getattribute__(self, attr):
if attr == "__str__":
return lambda: "Hello"
return object.__getattribute__(self, attr)
x = A()
print(x)
print(str(x))
print(x.__str__())
出力:
< main .A object at 0x000001FDF7AEA760>
< main .A object at 0x000001FDF7AEA760>
こんにちは
期待される出力:
ハロー
ハロー
ハロー