Cet article doit être aussi intuitif que possible pour ceux qui écrivent "def \ _ \ _ init \ _ \ _ (self):" qui apparaît dans la définition de classe Python comme s'ils étaient mémorisés pour le moment. J'ai écrit pour le faire.
Python prend le format suivant lors de la définition d'une classe.
class demo_class():
def __init__(self):
pass
Comme ce n'est pas intuitif (pour python), je pense qu'il y a beaucoup de débutants autres que moi qui ont du mal.
\ _ \ _ Init \ _ \ _ () est un nom spécial donné à la méthode qui initialise un objet individuel lorsqu'il est créé à partir de la définition de classe.
Eh bien, je ne sais pas si vous en dites autant. Cependant, cette introduction à Python 3 a continué à expliquer ce que fait le système de traitement Python, et c'était facile à comprendre, donc je vais le résumer et l'expliquer avec des chiffres supplémentaires.
Pour faciliter l'explication, ajoutez le nom de la variable membre de la classe et ajoutez l'élément pour ajouter "hoge".
class demo_class():
def __init__(self,name):
self.name = name
a = demo_class("hoge")
print("a: ",a)
print("a.name: ",a.name)
[Résultat de sortie]
a: <__main__.demo_class object at 0x1023b6668>
a.name: hoge
python peut instancier des classes tout comme exécuter une fonction. Une instance est une entité d'un objet, et l'instanciation signifie en gros rendre un programme exécutable en mémoire.
En fait, d'où s'exécute l'interpréteur python dans la ligne ci-dessous?
a = demo_class("hoge")
Il sera traité dans l'ordre ci-dessus. Cela ressemble à la figure ci-dessous
Tout d'abord, créez un objet de classe vide à partir de la définition de classe
L'objet de classe généré doit modifier l'objet précédent pour s'initialiser (ajouter "hoge" au membre de nom). Pour le moment, de l'interpréteur python, je ne sais pas quel type d'initialisation doit être fait à quel objet, et je ne sais pas comment faire référence à la variable.
La méthode \ _ \ _ init \ _ \ _ est une méthode spéciale d'initialisation.
Autrement dit, ** pour indiquer clairement quel objet vous voulez que l'interpréteur Python initialise et comment ** à la méthode spéciale \ _ \ _ init \ _ \ _ méthode d'initialisation ** l'objet vide que vous venez de créer Est passé comme argument auto **.
Cela vous permet d'identifier vos propres objets et élimine le besoin de créer des noms supplémentaires pour chaque classe.
Le problème ici est "self.name".
def __init__(self,name):
self.name = name
Le "self.name" sur le côté gauche ** définit une variable membre **, donc ** créez une variable de nom dans l'objet et attribuez le nom contenant l'argument "hoge" ** C'est. En d'autres termes, ** le nom sur la première ligne et le nom sur le côté droit de la deuxième ligne représentent des choses différentes **. Comme c'est la même chose, je pense que c'est difficile à comprendre à première vue.
La raison de l'hypothèse de «soi» est qu'elle rend explicite à quel objet l'interprète doit se référer pour le traitement. (peut être)
(En python, tout ce qui suit un "." Est appelé un attribut.)
Dans cet article, il y a de nombreuses parties qui sont affirmées comme «faire XX» ou «faire XX» et expliquées comme un moyen dans un but limité, mais il s'agit de saisir l'image. C'est une méthode adoptée pour en faire le premier objectif, et il y a quelques problèmes compte tenu de la longue durée d'apprentissage.
Premiers pas avec Python3 Document officiel
Recommended Posts