Ordre de référence des variables de classe et des variables d'instance dans "self. Variables de classe" en Python

Intro

Lors de l'explication du concept de variables de classe et de variables d'instance en Python Pour les variables définies comme des variables de classe mais pas comme des variables d'instance, N'est-il pas étrange que vous puissiez accéder avec la notation des variables d'instance, self. Class variable name? J'ai remarqué. → J'ai écrit un code simple et j'ai confirmé le comportement de "self. Class variable".

Ce que j'ai trouvé

En Python, lorsque vous faites référence à self.variable name,

  1. Tout d'abord, reportez-vous à la variable d'instance
  2. ** Si la variable d'instance n'est pas définie, reportez-vous à la variable de classe avec le même nom avant de renvoyer une erreur. ** **

Pour éviter la congestion, il est plus sûr d'écrire nom de classe.nom de variable de classe lors du référencement d'une variable de classe dans une instance.

Exemple de code

self.py


class Hoge:
    id = 0

    @classmethod
    def dump_class(cls):
        print("Variable de classe: ", cls.id)

    def construct(self, id):
        self.id = id

    def dump_instance(self):
        print("Variable d'instance: ", self.id)


if __name__ == "__main__":
    Hoge.dump_class()  # -> 0

    hoge_instance = Hoge()
    hoge_instance.dump_instance()  # -> 0,Si aucune variable d'instance n'est définie, la variable de classe portant le même nom sera référencée.
    hoge_instance.dump_class()  # -> 0

    hoge_instance.construct(id=10)  #Définir des variables d'instance
    hoge_instance.dump_instance()  # -> 10,La référence de variable d'instance est prioritaire
    hoge_instance.dump_class()  # -> 0

référence

Lorsque vous accédez aux variables de classe, vous devez éviter d'y accéder comme "variables instance.class" ou "variables self.class" à moins que vous n'ayez une raison spécifique de le faire. En Python, les variables d'instance peuvent être créées à partir d'objets d'instance, qui peuvent involontairement masquer des variables de classe avec des variables d'instance. Variables de classe Python et variables d'instance | UX MILK

Recommended Posts

Ordre de référence des variables de classe et des variables d'instance dans "self. Variables de classe" en Python
Python: variables de classe et d'instance
[python] Différence entre variable et self. Variable dans la classe
Variables de classe et d'instance Python
J'étais accro aux variables de classe et aux variables d'instance erronées en Python
Globalisation des variables d'instance de classe
Différence entre Ruby et Python en termes de variables
Exemple d'obtention du nom du module et du nom de la classe en Python
Les mines terrestres cachées dans les variables de classe Python
Définitions de classe Python et gestion des instances
Réputation des livres Python et des livres de référence
Créer une instance d'une classe prédéfinie à partir d'une chaîne en Python
Exemple d'utilisation de variables de classe et de méthodes de classe
Pour référencer des variables d'environnement en Python dans Blender
[python] Obtenir une liste de variables d'instance
Projet Euler # 1 "Multiple de 3 et 5" en Python
[Python] classe, instance
classe python, instance
Variables Python et types de données appris avec la chimio-automatique
[Python] Chapitre 02-01 Bases des programmes Python (opérations et variables)
Problème avec les variables pseudo-privées Python et l'héritage de classe
Explication de la distance d'édition et de l'implémentation en Python
[Python] Type de classe et utilisation du module datetime
À propos de la classe et de l'instance
classe de cas en python
Notation de classe en Python
Ordre naturel en Python
Traitement pleine largeur et demi-largeur des données CSV en Python
Calcul de l'écart type et du coefficient de corrélation en Python
[python] Calcul des mois et des années de différence de date / heure
[Python] Comment trier un dict dans une liste et une instance dans une liste
Pourquoi le premier argument de la classe [Python] est-il self?
Récapitulatif du traitement de la date en Python (datetime et dateutil)
Comment obtenir l'accès par attribut et la conservation de l'ordre d'insertion dans Python dict
J'ai comparé la vitesse de la référence du python dans la liste et la référence de l'inclusion du dictionnaire faite à partir de la liste dans.
J'ai des problèmes avec les variables d'instance héritées en Python
À propos des variables et des objets Python
Comment créer une instance d'une classe particulière à partir de dict en utilisant __new__ () en python
[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse
Jugement d'équivalence d'objet en Python
Afficher les nombres et les caractères affectés aux variables dans l'impression python
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Pile et file d'attente en Python
J'ai créé une classe en Python et essayé de taper du canard
[Python] Forces et faiblesses de DataFrame en termes de temps requis
Variables Python et ID d'objet
[Astuces] Problèmes et solutions dans le développement de python + kivy
Unittest et CI en Python
Implémentation du tri rapide en Python
Installation source et installation de Python
Python # À propos de la référence et de la copie
Je veux clarifier la question de la méthode "__init__" et de l'argument "self" de la classe Python.
Comptez bien le nombre de caractères thaïlandais et arabes en Python
Créez votre propre classe de structure graphique et son dessin avec python
[python] Obtenez le rang des valeurs dans la liste par ordre croissant / décroissant
Liste des solveurs et modélisateurs de conception linéaire (LP) disponibles en Python
Je suis mort en pensant qu'une variable de classe Python était une variable d'instance