Essayez de comprendre Python soi

Remarquer

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.

introduction

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é.

Tout ce code

main.py


class Cat():
    def __init__(self,name):
        self.name = name

    def naku(self):
        print("Miaou")

tama = Cat("Tama")
tama.naku()

Cat.naku(tama)

Avant d'entrer dans le sujet principal

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.

Sujet principal

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.

Ce que j'ai trouvé

Recommended Posts

Essayez de comprendre Python soi
Essayez Python
Essayez d'exploiter Facebook avec Python
Essayez de calculer Trace en Python
Essayez de convertir la CLI cloudmonkey en python3 -1
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
Python> essayez: / sauf:
Essayez d'utiliser Excel en utilisant Python (Xlwings)
[Python] pandas à bien comprendre en 10 minutes
Python amateur tente de résumer la liste ①
[Python] Comprendre comment utiliser les fonctions récursives
Comprendre l'auto python
Essayer d'implémenter et de comprendre les arborescences de segments étape par étape (python)
"Backport" vers python 2
Premiers pas pour essayer Google CloudVision en Python
Essayez d'implémenter Oni Mai Tsuji Miserable avec python
Essayez auto pour évaluer automatiquement Enum dans Python 3.6
Essayez de résoudre le problème de l'héritage de classe Python
Comprenons comment passer des arguments (édition Python)
Essayez de résoudre le diagramme homme-machine avec Python
Essayez de dessiner une courbe de vie avec python
Essayez de créer un code de "décryptage" en Python
Essayez de générer automatiquement des documents Python avec Sphinx
Essayez de calculer RPN avec Python (pour les débutants)
Python simulé pour essayer AWS IoT Device Shadow
Essayez de créer un groupe de dièdre avec Python
Notes de connaissances nécessaires pour comprendre le framework Python
Essayez de détecter les poissons avec python + OpenCV2.4 (inachevé)
Comprendre le développement de Python pour Pepper. -Introduction à Python Box-
Essayez de gratter avec Python.
Comment installer Python
python essayez ~ sauf ~ autre
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Réécrire le code Python2 en Python3 (2to3)
Comment installer python
Introduction au langage Python
Introduction à OpenCV (python) - (2)
Essayez Debian + Python 3.4 + django1.7 ……
Essayez d'implémenter yolact
Essayez gRPC en Python
Remarque pour faire de python un démon
Introduction de Python 2.7 à CentOS 6.6
Connectez python à mysql
Essayez 9 tranches en Python
Essayez d'utiliser Tweepy [Python2.7]
Python essayer / sauf mémo
Même les débutants veulent dire "Je comprends parfaitement Python"
Essayez de résoudre le livre des défis de programmation avec python3
python débutant essaie d'ajouter une authentification de base à l'administrateur de Django
Essayez de créer un module Python en langage C
[Python] Essayez de lire la bonne réponse au problème FizzBuzz
Faisons un outil de veille de commande avec python
Essayez d'améliorer votre propre quiz d'introduction avec Python
(Python) Essayez de développer une application Web en utilisant Django
Essayez de résoudre le problème d'affectation du médecin de formation avec Python