En fait __call__
la méthode est implémentée dans le Layer
classe, qui est héritée par Network
classe, qui est héritée par Model
classe :
class Layer(module.Module):
def __call__(self, inputs, *args, **kwargs):
class Network(base_layer.Layer):
class Model(network.Network):
Alors MyClass
héritera de ce __call__
méthode.
Informations supplémentaires :
Donc, en fait, ce que nous faisons est de remplacer le call
hérité méthode, quel nouveau call
la méthode sera alors appelée depuis le __call__
hérité méthode. C'est pourquoi nous n'avons pas besoin de faire un model.call()
.Ainsi, lorsque nous appelons notre instance de modèle, elle est héritée de __call__
la méthode sera exécutée automatiquement, ce qui appelle notre propre call
méthode.
Le rasoir d'Occam dit que le __call__
la méthode est implémentée dans le Model
class, donc votre sous-classe héritera de cette méthode, c'est pourquoi l'appel fonctionne. Le __call__
dans le Model
la classe transmet simplement les paramètres à votre call
méthode et fait de la comptabilité.