Das ist schwer zu beantworten. Meine Meinung ist, dass Sie nie __call__
definieren sollten, es sei denn, Ihr tatsächliches Ziel ist es, eine Funktion zu erstellen. Es ist nicht etwas, das Sie tun würden, nachdem Sie bereits ein traditionelles Objekt erstellt haben.
Mit anderen Worten, wenn Sie aus fangen denken: „Ich ein Objekt erstellen werde“ Sie sollen nie auf der Umsetzung __call__
beenden. Wenn auf der anderen Seite beginnen Sie heraus zu denken: „Ich werde eine Funktion erstellen ... aber ich wünschte, ich das Objekt Framework verwenden könnte meine Funktion hat einig Zustand zu lassen,“ dann könnte man die Funktion als Objekt erstellen mit state, und definieren __call__
, um es wie eine Funktion zu fungieren.
Ich möchte ein letzter Ratschlag einschließen, die durch @Paul Manta in einem Kommentar auf die Frage zur Verfügung gestellt wurde, wo er schrieb:
Wenn Sie unsicher sind, ob Sie __call__
brauchen, dann nicht Sie tun brauche __call__
Ich denke, das ist ein guter Rat.
Wenn es Sinn macht. –
Wenn Sie sich nicht sicher sind, ob Sie '__call__' brauchen, dann brauchen Sie' __call__' nicht. –