Je suis moi-même nouveau sur Python et il y a beaucoup de choses que je ne comprends pas. (Je suis désolé si cet article est également faux) C'est presque mon article commémoratif.
Lorsque vous étudiez des cours en Python, quelque chose appelé self sort. Cependant, cela semble magique, donc je ne suis pas sûr, donc je vais résumer ce que j'ai enquêté.
main.py
class Cat():
def __init__(self,name):
self.name = name
def naku(self):
print("Miaou")
tama = Cat("Tama")
tama.naku()
Cat.naku(tama)
En Python
main.py
receveur.Méthode(argument…)
,
main.py
Classe de récepteur.Méthode(receveur,argument…)
Interpréter comme. Je ne sais pas pourquoi. (Désolé) Cependant, cela fonctionne de la même manière quel que soit celui que vous écrivez, et lorsque vous vous comprenez, il est plus facile de comprendre le premier comme le second, donc je vais l'expliquer de cette manière.
Pour l'instant, parcourons tout le code. Tout d'abord, il y a la classe Cat.
main.py
class Cat():
def __init__(self,name):
self.name = name
def naku(self):
print("Miaou")
Il y a un nom dans la variable d'instance, La fonction naku sonne "Nya".
Les classes sont comme des concepts, donc elles sont en fait invoquées (instanciées) sous le nom de "Tama".
main.py
tama = Cat("Tama")
Oui, le chat Tama a maintenant été convoqué. Ensuite, laissez-moi sonner.
main.py
#receveur.Méthode(argument…)
tama.naku() #=>Miaou
Oui, ça a crié. C'est une autre façon d'écrire, n'est-ce pas?
main.py
#Classe de récepteur.Méthode(receveur,argument…)
Cat.naku(tama) #=>Miaou
Oui, ce que vous voulez voir ici, c'est que "tama" est dans la partie receveur des parenthèses d'argument. Donc, si vous le comparez à nouveau avec la fonction naku définie dans la classe,
python
#définition de la fonction neko
def naku(self):
#Appel de fonction
Cat.naku(tama)
Les arguments concordaient. C'est la véritable identité de soi.
En d'autres termes, ici c'est "tama = self". On explique souvent que "self est l'instance elle-même", mais simplement parce que la fonction "receiver class.method (receiver, argument ...)" est appelée dans la syntaxe python, la première Il semble que cela ne sert à rien car le nombre d'arguments ne correspond que si l'instance elle-même est placée dans un seul argument (récepteur).
La même chose est vraie pour la fonction init. Considérant le fonctionnement de la fonction init appelée lors de l'invocation de Tama-chan,
python
#Classe de récepteur.Méthode(receveur,argument…)
Cat.__init__(tama,"Tama")
Vous pouvez comprendre que le code est fait en interne.
Non, pourquoi le "tama" de l'argument Cat () est-il devenu l'argument de la fonction init! ?? C'est une question qui se pose certainement, mais si vous y réfléchissez bien, la fonction init est une fonction spéciale qui est toujours appelée au moment de l'instanciation, contrairement à la fonction que vous définissez vous-même, elle est donc considérée comme un argument de Cat (). Cependant, je pense qu'il est automatiquement inclus dans l'argument de la fonction init. (S'il vous plaît laissez-moi savoir si quelqu'un sait.) De plus, les classes ne sont pas des fonctions, donc aucun argument n'est nécessaire.
Recommended Posts