[Python] Comprenez la classe self. Apprenez le rôle de soi à partir du résultat de l'exécution avec ou sans soi.

[Python] Comprenez la classe self. Apprenez le rôle de soi à partir du résultat de l'exécution avec ou sans soi.

Tous ceux qui ont commencé python se sont demandé, Un contenu plein de contenu partout.

Réorganisez-vous.


### ■ Résumé -Il est nécessaire de définir un argument de la méthode dans la classe par défaut. └ Sinon erreur └ Utilisez-vous habituellement

・ Self est facultatif └ Fonctionne même si ce n'est pas soi

-Lors de l'utilisation de variables dans la classe, utilisez self. Variables. └ Si vous utilisez x = 123, "self.x"

・ Les variables globales peuvent être utilisées telles quelles dans la classe


### ■ Détails de vérification
## Différence de fonctionnement avec et sans soi Créez la classe suivante pour voir la différence de fonctionnement avec et sans soi.

** ▼ Classe de confirmation **

class1


class class1:
    def method1(self):
        print("Méthode exécutée1")

x = class1()
x.method1()

#production
#Méthode exécutée1

** ▼ Sans soi **

Pas de moi


class class1:
    def method1():
        print("Méthode exécutée1")

x = class1()
x.method1()

#production
# TypeError: method1() takes 0 positional arguments but 1 was given

** ■ Erreur ** method1() takes 0 positional arguments but 1 was given

La méthode "méthode1" définie dans la classe ne prend pas d'argument (0), mais 1 est donné.

Même dans le processus exécuté, l'intérieur de () est vide et aucun argument n'est entré. (Normalement argument 0) x.method1()


** ■ Cause ** Lors de l'exécution d'une méthode dans une classe, l'instance elle-même est automatiquement donnée en argument.


Exemple
x.method1 () → Argument 1 x.method1 ('A', 'B') → Argument 3


** ■ Contre-mesure ** Les méthodes de la classe doivent recevoir au moins un argument par défaut.

⇛ Son argument est "soi"

L'argument peut être autre que soi. Il est d'usage de se servir de soi.


## Ça ne doit pas être soi-même ** ▼ Lors de l'utilisation de caractères autres que soi **

Lorsque l'argument self est remplacé par "a" et "aiueo".

Personnages autres que soi ①


class class1:
    def method1(a):
        print("Méthode exécutée1")

x = class1()
x.method1()

#production
#Méthode exécutée1

Personnages autres que soi ②


class class1:
    def method1(AIUEO):
        print("Méthode exécutée1")

x = class1()
x.method1()

#production
#Méthode exécutée1

Les deux fonctionnent sans problèmes.


## Différences à l'intérieur et à l'extérieur de la classe def

Si vous sortez la méthode définie de la classe, bien sûr, l'argument n'est pas passé par défaut.

Hors classe


def method1():
    print("Méthode exécutée1")
    
method1()

#production
#Méthode exécutée1

À l'opposé de la méthode dans la classe, si vous ne passez qu'un seul argument, vous obtiendrez une erreur.

Erreur


def method1():
    print("Méthode exécutée1")
    
method1('A')

#production
# TypeError: method1() takes 0 positional arguments but 1 was given

Erreur: method1 () prend 0 argument de position mais 1 a été donné

Une erreur qu'il y a 0 argument mais 1 supplémentaire.


## Définir des arguments avec des méthodes dans la classe

Puisqu'un argument est défini par défaut dans la classe, il est nécessaire d'en définir un de plus que d'habitude lors de la définition d'autres arguments. (Devient soi + α)

Lors de la définition de l'argument


class class2:
    def weather(self, day, sky):
        print(day + 'Le temps est' + sky + 'est.')

x = class2()
x.weather('aujourd'hui', 'Ensoleillé')

#production
#Le temps est ensoleillé aujourd'hui.

Définissez trois arguments de la méthode météo dans la classe: "self", "day" et "sky".


** ▼ Lorsque «soi» est remplacé par «a» ** Bien sûr, cela fonctionne normalement même si ce n'est pas "soi".

Autre que soi


class class2:
    def weather(a, day, sky):
        print(day + 'Le temps est' + sky + 'est.')

x = class2()
x.weather('aujourd'hui', 'Ensoleillé')

#production
#Le temps est ensoleillé aujourd'hui.

## Utiliser des variables dans la classe

Le gros avantage de la classe est que vous pouvez définir des fonctions et des variables qui ne sont valides que dans la classe. (Pas global)

Vous devez le combiner avec "self" pour utiliser les variables de la classe.


** ▼ Utiliser des variables dans la classe **

Pour appeler la variable "x = 123" définie dans la classe de la méthode, elle doit être "self.x".

class3


class class3:
    x = 123

    def method1(self):
        print(self.x)

cls = class3()
cls.method1()  

#production
# 123

** ▼ Si vous ne vous ajoutez pas **

Une erreur se produira s'il n'y a pas de self dans "self.x".

x seulement


class class3:
    x = 123

    def method1(self):
        print(x)

cls = class3()
cls.method1()  

#production
# NameError: name 'x' is not defined

Erreur: le nom'x 'n'est pas défini "X = 123" dans la classe n'est pas "x".


** ▼ Utiliser des variables globales **

Self n'est pas requis lors de l'utilisation de variables définies en dehors de la classe.

Utiliser des variables globales


x = 123

class class3:

    def method1(self):
        print(x)

cls = class3()
cls.method1()

#production
# 123

En utilisant self, vous pouvez clairement distinguer s'il s'agit d'une variable globale ou d'une variable dans une classe.


** ▼ Autre que soi ** Au fait, cela fonctionne autrement que soi.

Autre que soi


class class3:
    x = 123
    
    def method1(AIUEO):
        print(AIUEO.x)

cls = class3()
cls.method1()  

#production
# 123

Je me demandais ce qu'est le moi, mais je pense qu'il est pratique et nécessaire de savoir comment l'utiliser.

Recommended Posts

[Python] Comprenez la classe self. Apprenez le rôle de soi à partir du résultat de l'exécution avec ou sans soi.
Apprenez Nim avec Python (dès le début de l'année).
Préparer l'environnement d'exécution de Python3 avec Docker
Pourquoi le premier argument de la classe [Python] est-il self?
Mesurons le résultat de l'exécution du programme avec C ++, Java, Python.
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
Apprenez les bases de Python ① Débutants élémentaires
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
[Python3] Comprendre les bases de Beautiful Soup
Notes d'apprentissage depuis le début de Python 1
Vérifier l'existence du fichier avec python
Le résultat de l'installation de python sur Anaconda
Apprenez le modèle de conception "Singleton" avec Python
Apprenez intuitivement la refonte de Python np
Note Python: le rôle secret de Kamma
Notes d'apprentissage depuis le début de Python 2
Apprenez le modèle de conception "Façade" avec Python
[Python3] Comprendre les bases des opérations sur les fichiers
"Programmation Python AI" à partir de 0 pour Windows
Efficacité commerciale à partir de zéro avec Python
Générer une classe à partir d'une chaîne en Python
Typage Python
Construction d'environnement explosif Python à partir de zéro (Mac)
Inscription auprès de PyPI à partir de la bibliothèque Python moderne faite par vous-même
[Python] classe, instance
À propos de python, classe
Typage dynamique de Python
sql à sql
[Python] Comprenez la classe self. Apprenez le rôle de soi à partir du résultat de l'exécution avec ou sans soi.
MeCab de Python
classe python, instance
Les bases de #Python (classe)
[Python] Lecture du code source Django Vue à partir de zéro ①
Introduction aux mathématiques à partir du mémo d'étude Python Vol.1
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Vous pouvez appeler la méthode de la classe directement dans Python3 sans ajouter @staticmethod
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Mathématiques Todai 2016 résolues avec Python
Afficher le résultat du traitement de la géométrie en Python
Calculez le nombre total de combinaisons avec python
Vérifiez la date du devoir de drapeau avec Python
[Note] À propos du rôle du trait de soulignement "_" en Python
Extrait uniquement complet du résultat de Trinity
Convertir le code de caractère du fichier avec Python3
De l'introduction de pyethapp à l'exécution du contrat
[Python] Déterminez le type d'iris avec SVM
De l'état initial de CentOS8 à l'exécution de php python perl ruby avec nginx
Extraire des images et des tableaux de pdf avec python pour réduire la charge de reporting
J'ai réfléchi à la raison pour laquelle Python self est nécessaire avec le sentiment d'un interpréteur Python
Extraire le tableau des fichiers image avec OneDrive et Python
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
Ajouter des attributs d'objets de classe avec une instruction for
L'histoire de Python sans opérateurs d'incrémentation et de décrémentation.
Je veux grep le résultat de l'exécution de strace
Connaissez l'emplacement du fichier de définition de classe Python.
[Python] Récupérez le texte de la loi à partir de l'API e-GOV law
Détruire l'expression intermédiaire de la méthode sweep avec Python
Étude depuis le début de Python Hour1: Hello World
Visualisez la gamme d'insertions internes et externes avec python
Implémentation python de la classe de régression linéaire bayésienne
Récupérer le code retour d'un script Python depuis bat
Calculer le coefficient de régression d'une analyse de régression simple avec python
Obtenez des résultats au format dict avec Python psycopg2
Apprenez le modèle de conception «Chaîne de responsabilité» en Python
Préparation de l'environnement d'exécution de PyTorch avec Docker Novembre 2019
Reproduire l'exemple d'exécution du chapitre 4 de Hajipata en Python
Résumé du flux de base de l'apprentissage automatique avec Python
14 quiz pour comprendre la portée étonnamment compliquée de Python