Vérifiez le comportement du destroyer en Python

Exemple de code * class_test.py *

class_test.py


class SampleClass:
    num = 0
    def __init__(self, number=1):
        SampleClass.num +=1 #Chaque fois qu'une instance est créée, la variable de classe num est incrémentée de 1.
        self.num = number #Stockez le numéro d'argument reçu du générateur lors de la création de l'instance dans la variable d'instance num.
    def __del__(self):
        SampleClass.num -=1 #Décrémenter 1 variable de classe num à chaque fois que vous supprimez une instance
        print("Supprimé cette instance")

Démarrez Python3 dans la même hiérarchie que le répertoire contenant le fichier de script ci-dessus

Terminal


$ ls
class_test.py
$ cat class_test.py
class SampleClass:
    num = 0
    def __init__(self, number=1):
        SampleClass.num +=1 #Chaque fois qu'une instance est créée, la variable de classe num est incrémentée de 1.
        self.num = number #Stockez le numéro d'argument reçu du générateur lors de la création de l'instance dans la variable d'instance num.
    def __del__(self):
        SampleClass.num -=1 #Décrémenter 1 variable de classe num à chaque fois que vous supprimez une instance
        print("Supprimé cette instance")
$
$ python3
>>>

* Importez * le module * class_test * pour créer et supprimer une instance de la classe * SampleClass *.

Terminal


>>> import class_test as ct
>>>
>>> sample_1 = ct.SampleClass()
>>> print(ct.SampleClass.num)
1
>>>
>>> print(sample_1.num)
1
>>>

(Pointe ici)

  1. Créé une instance de la classe * SampleClass *.
  2. La valeur de la variable de classe * num * qui gère le nombre d'instances s'affiche sous la forme 1.
  3. De plus, la valeur de la variable d'instance * num * de l'instance générée * sample_1 * est définie sur 1 définie dans l'argument par défaut du constructeur.

Terminal


>>> sample_2 = ct.SampleClass(number=4)
>>> print(ct.SampleClass.num)
2
>>> print(sample_2.num)
4
>>>

(Pointe ici)

  1. Créé une autre instance de la classe * SampleClass *.
  2. La valeur de la variable de classe * num * qui gère le nombre d'instances s'affiche sous la forme 2.
  3. En outre, la valeur de la variable d'instance * num * que l'instance générée * sample_2 * a est définie sur 4 qui a été transmise en tant qu'argument au constructeur lors de la génération de * sample_2 *.

Terminal


>>> sample_3 = ct.SampleClass(number=15)
>>> print(ct.SampleClass.num)
3
>>> print(sample_3.num)
15
>>>

(Pointe ici)

  1. Créé une autre instance de la classe * SampleClass *. Vous avez maintenant créé un total de 3 instances.
  2. La valeur de la variable de classe * num * qui gère le nombre d'instances s'affiche sous la forme 3.
  3. En outre, la valeur de la variable d'instance * num * que l'instance générée * sample_3 * a est définie sur 15 qui a été transmise en tant qu'argument au constructeur lors de la génération de * sample_3 *.

De là, vous pouvez vérifier le comportement du destroyer.

Terminal


>>> del sample_2
Supprimé cette instance
>>>

(Pointe ici)

  1. Le * print ("Cette instance a été supprimée") décrit dans le * destroyer * de la classe * SampleClass * a été exécuté.
  2. Vous avez maintenant deux instances.

Terminal


>>> print(ct.SampleClass.num)
2
>>> print(sample_1.num)
1
>>> print(sample_3.num)
15
>>> print(sample_2.num)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sample_2' is not defined
>>>

(Pointe ici)

  1. La valeur de la variable de classe * num * qui gère le nombre d'instances s'affiche sous la forme 2.
  2. Lorsque vous supprimez l'instance nommée * sample_2 *, vous pouvez voir que le processus de décrémentation de la variable de classe * num * décrit dans * destructor * a été exécuté correctement.
  3. À ce moment, il a également été confirmé que les variables d'instance des deux instances (* sample_1 * et * sample_3 *) autres que l'instance supprimée n'avaient pas changé de valeur et n'étaient pas affectées par inadvertance. ..

(Une addition)

Le code sera plus court si l'instruction * import * est la suivante.

déclaration d'importation (après modification)


from class_test import SampleClass

Terminal


>>> from class_test import SampleClass
>>>
>>> sample_1 = SampleClass()
>>> print(SampleClass.num)
1
>>> print(sample_1.num)
1
>>>
>>> sample_2 = SampleClass(number=4)
>>> print(SampleClass.num)
2
>>> print(sample_2.num)
4
>>>

(Page Web de référence)

  1. Comment utiliser Python destructor [pour les débutants]
  2. [Python] Trouvez le nombre d'instances
  3. À propos des classes Python
  4. Article Qiita de @ ysk24ok "[Python] Import Stumbling Point"

Recommended Posts

Vérifiez le comportement du destroyer en Python
Vérifiez la nature atrophique de la distribution de probabilité en Python
Vérifiez le comportement lors de l'attribution de Python
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
Vérifier l'existence du fichier avec python
Vérifiez si l'URL existe en Python
Le résultat de l'installation de python sur Anaconda
Vérifiez le chemin du module importé Python
Principes de base pour exécuter NoxPlayer en Python
À la recherche du FizzBuzz le plus rapide en Python
Comment vérifier la taille de la mémoire d'une variable en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
[python] comportement d'argmax
le zen de Python
Sortie du nombre de cœurs de processeur en Python
[python] Vérifier les éléments de la liste tous, tous
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Vérifiez si les caractères sont similaires en Python
Récupérer l'appelant d'une fonction en Python
Faites correspondre la distribution de chaque groupe en Python
Afficher le résultat du traitement de la géométrie en Python
Copiez la liste en Python
Vérifiez la date du devoir de drapeau avec Python
Découvrez la fraction de la valeur saisie en python
Trouvez la solution de l'équation d'ordre n avec python
L'histoire de la lecture des données HSPICE en Python
[Note] À propos du rôle du trait de soulignement "_" en Python
Résolution d'équations de mouvement en Python (odeint)
Sortie sous la forme d'un tableau python
Vérifions la chaîne d'octets en mémoire du nombre flottant flottant en Python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Vérifiez si la chaîne est un nombre en python
Un moyen simple de vérifier la source des modules Python
Découvrez la bonne efficacité de calcul de la vectorisation en Python
Vers la retraite de Python2
Comment obtenir le nombre de chiffres en Python
Trouver des erreurs en Python
Vérifiez l'existence de commandes externes en Python (comme `which`)
Python - Vérifiez le type de valeurs
[python] Récupère la liste des classes définies dans le module
En Python, changez le comportement de la méthode en fonction de la façon dont elle est appelée
L'histoire de FileNotFound en Python open () mode = 'w'
Jugement d'équivalence d'objet en Python
Apprenez le modèle de conception «Chaîne de responsabilité» en Python
Implémenter la solution de l'algèbre de Riccati en Python
Obtenir la taille (nombre d'éléments) de Union Find en Python
Ne pas être conscient du contenu des données en python
Vérifiez la version OpenSSL de python 2.6
Reproduire l'exemple d'exécution du chapitre 4 de Hajipata en Python
Utilisons les données ouvertes de "Mamebus" en Python
Vérifier l'existence de tables BigQuery en Java
Implémentation de l'algorithme "Algorithm Picture Book" en Python3 (Heap Sort Edition)
[Python] Affiche toutes les combinaisons d'éléments de la liste
Implémentation du tri rapide en Python
Obtenez l'URL de la destination de la redirection HTTP en Python
Un mémorandum sur la mise en œuvre des recommandations en Python
À propos des fonctionnalités de Python
Reproduire l'exemple d'exécution du chapitre 5 de Hajipata en Python