重複の可能性:
メタクラスのインターセプト オペレーター ルックアップ
新しいスタイル クラスで Python の「マジック」メソッドの呼び出しをインターセプトするにはどうすればよいですか?
次のコードを検討してください。
class ClassA(object):
def __getattribute__(self, item):
print 'custom__getattribute__ - ' + item
return ''
def __str__(self):
print 'custom__str__'
return ''
a=ClassA()
print 'a.__str__: ',
a.__str__
print 'str(a): ',
str(a)
出力は私にとって驚くべきものでした:
a.__str__: custom__getattribute__ - __str__
str(a): custom__str__
str(a)
マジックメソッドにマップされるべきで はありませんa.__str__()
か?- custom を削除しても
ClassA.__str__()
、ClassA.__getattribute__()
まだ呼び出しがキャッチされません。どうして?