Hier ist, was ich mit so viel arbeiteteWie überschreibe ich die Methode __call__ eines Methodenobjekts in Python?
def f(n):
return n
f.__call__ = lambda n: n + 1
print f(2) #I expect an output of 3 but get an output of 2
Ich bin nicht daran interessiert, in einer anderen Art und Weise die gewünschte Ausgabe zu erreichen. Für pädagogische Zwecke würde ich gerne wissen, warum das Überschreiben der __call__
, wie ich es getan habe, nicht so funktioniert, wie ich es erwarte.
@SethMMorton: Versuchen Sie 'dir (f)' auszuführen, um zu sehen, dass sie es haben. – Tadeck
Related: http://stackoverflow.com/questions/9707600/python-functions-and-their-call-attribute – Jared