Pourquoi le premier argument de la classe [Python] est-il self?

introduction

Lors de la définition d'une classe en Python, je me suis toujours demandé pourquoi le nom du premier argument était `` self '', alors je vais le chercher et l'écrire.

Est-ce inutile sauf pour le premier argument du moi?

De la conclusion, ce n'est pas bon. Dans PEP8 (1), utilisez toujours self comme nom du premier argument de la méthode ```instance. ` Est défini comme. Cependant, en termes de fonctionnement, il fonctionne correctement même s'il n'est pas `` self ''. Pour un exemple, reportez-vous à ici (2).

class Hoge():
    def __init__(self_inplace_hoge, string):
        self_inplace_hoge.string = string
        print('self_inplace_hoge: ', self_inplace_hoge.string)

class Fuga(Hoge):
    def __init__(self_inplace_fuga, string):
        self_inplace_fuga.string = string
        print('self_inplace_fuga: ', self_inplace_fuga.string)

hoge = Hoge('aaaa')
fuga = Fuga('bbbb')

print(hoge.string)
print(fuga.string)
self_inplace_hoge:  aaaa
self_inplace_fuga:  bbbb
aaaa
bbbb

Cela fonctionne, mais c'est une violation des règles, vous ne pouvez donc pas le faire.

Au fait, si vous le considérez comme le rôle de `` soi '', il retournera là où se trouve la classe correctement définie dans la mémoire. Est-ce amusant de la regarder de manière inattendue?

self_inplace_hoge:  <__main__.Hoge object at 0x00000123D17C1CC8>
self_inplace_fuga:  <__main__.Fuga object at 0x00000123D17C12C8>

à la fin

thisEtselfJe me demande si quelqu'un pourrait faire une règle parce que si vous lui donnez un nom que vous aimez, ce sera dangereux ~ C'est un peu comme un mot à la mode.

Matériel de référence

(1) pep8-ja (2) self in Python class

Recommended Posts

Pourquoi le premier argument de la classe [Python] est-il self?
First Python 3 ~ Le début de la répétition ~
[Python] Qui est exécuté en premier, variable de classe ou __init__?
J'ai réfléchi à la raison pour laquelle Python self est nécessaire avec le sentiment d'un interpréteur Python
[python] [meta] Le type de python est-il un type?
Je veux clarifier la question de la méthode "__init__" et de l'argument "self" de la classe Python.
La réponse de "1/2" est différente entre python2 et 3
Pourquoi l'implémentation Python d'ISUCON 5 a utilisé Bottle
FAQ: Pourquoi la comparaison des nombres est-elle incohérente?
Ceci est le seul examen de base de Python ~ 3 ~
Le sens de soi
le zen de Python
Connaissez l'emplacement du fichier de définition de classe Python.
Implémentation python de la classe de régression linéaire bayésienne
python (2) nécessite self car la méthode est une méthode d'instance
[Python] Comprenez la classe self. Apprenez le rôle de soi à partir du résultat de l'exécution avec ou sans soi.
Le moment auquel la valeur de l'argument par défaut est évaluée diffère entre Ruby et Python.
Ne prenez pas une instance d'une classe d'exception Python directement comme argument de la classe d'exception!
Vers la retraite de Python2
À propos des fonctionnalités de Python
Le pouvoir des pandas: Python
Ordre de référence des variables de classe et des variables d'instance dans "self. Variables de classe" en Python
Quelle est la version TLS par défaut du module de requêtes python?
Installation des paramètres initiaux Mac-Python (pyenv) au plus vite
[Python] La pierre d'achoppement de l'importation
[Hikari-Python] Chapitre 09-03 Classe (Héritage)
Extension du dictionnaire python par argument
Le 14 mars est le jour du rapport de circonférence. L'histoire du calcul du ratio de circonférence avec python
La probabilité de précipitation est-elle correcte?
"La classe d'introduction Python la plus simple" modifiée
[Python] Qu'est-ce que @? (À propos des décorateurs)
Existence du point de vue de Python
[Python] Comment obtenir le premier et le dernier jour du mois
pyenv-changer la version python de virtualenv
Pourquoi Super Intelli ne pouvait pas comprendre la classe
[python] Quelle est la clé triée?
Obtenez le premier élément du jeu de requêtes
[Python] Comprendre le potentiel_field_planning de Python Robotics
Revue des bases de Python (FizzBuzz)
Voir python pour la première fois
Examiner la classe d'un objet avec python
À quoi sert le trait de soulignement Python (_)?
Science "Saito est-il le représentant de Saito?"
La première étape de Python Matplotlib
Si la précision du test PCR est mauvaise, pourquoi ne pas répéter le test?
À propos de la liste de base des bases de Python
Une raison simple pour laquelle la valeur de retour de round (2.675,2) est de 2,67 en python (elle devrait être de 2,68 en réalité ...)
Apprenez les bases de Python ① Débutants élémentaires
[Python] Qu'est-ce qu'un argument formel? Comment définir la valeur initiale
Quel est le fichier XX à la racine d'un projet Python populaire?
[Mémorandum Python] Diverses vérifications de l'heure ・ La première instruction While est anormalement lente
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
Quel genre de livre est le "Python Crash Course" le plus vendu au monde?
Découvrez le nom de la méthode qui l'a appelée à partir de la méthode qui est python
[Introduction à Python] Quelle est la méthode de répétition avec l'instruction continue?
Générer une collection de première classe en Python
Expliquer le mécanisme de la classe de données PEP557