Lors de la création d'une classe, j'utilise beaucoup init, mais quand je reçois call, je l'interprète à ma manière.
L'environnement est Python 3.5.1 :: Anaconda 2.5.0 (x86_64) Exécuter sur le notebook Jupyter
Exemple de classe
class_sample.py
class A:
def __init__(self, a):
self.a = a
print("A init")
def __call__(self, b):
print("A call")
print(b + self.a)
class B(A):
def __init__(self, a, c):
super().__init__(a)
self.c = c
print("B init")
def __call__(self, d):
print("B call")
print(self.a + self.c + d)
Exemple d'exécution
>>> a = A(1)
A init
>>> a(2)
A call
3
>>> b = B(1,3)
A init
B init
>>> b(4)
B call
8
Seul __init__ '' est appelé lors de l'instanciation. Cependant, si vous appelez l'instance créée avec des arguments comme une fonction,
call '' sera appelé.
Bien sûr, si vous donnez une valeur de retour à `` call '', vous pouvez utiliser la valeur obtenue à partir de l'instance pour une autre variable.
Recommended Posts