[Road to Intermediate] Python semble être tous des objets

Lien vers le résumé

https://qiita.com/ganariya/items/fb3f38c2f4a35d1ee2e8

introduction

Il semble que Python soit tout un objet.

?? ?? ?? ?? ?? Vraiment? ?? ?? ?? ??

Qu'est-ce qu'un objet?

Un objet Python est tout ce que Python traite. Et l'objet a ** attributs **.

Par exemple

class A:

    def __init__(self):
        self.x = 50

a = A()
print(a.x)

Dans le code ci-dessus, la valeur est récupérée en utilisant "period" comme a.x. C'est "** attribut **" (x) qui peut être récupéré en utilisant cette période, et avoir un attribut signifie également ** objet ** (a).

Jetez un œil à un exemple d'objet

class A:

    def __init__(self):
        self.x = 50


a = A()
print(type(a))
print(type(A))
print(type(30))
print(type(int))

'''
<class '__main__.A'>
<class 'type'>
<class 'int'>
<class 'type'>
'''

En regardant l'exemple ci-dessus, voyons que toutes les données Python sont en fait des objets.

Le code ci-dessus utilise une fonction intégrée appelée «type». type est une fonction qui renvoie le type de l'objet passé en argument.

Par exemple, l'objet a est du type A du module main. De plus, la classe A, qui est le type d'origine, a un type appelé type. De même, le nombre Python 30, est de type int, et nous savons que 30 est un objet instance de int.

Comme vous pouvez le voir, toutes les données Python sont apparemment constituées d'objets.

Il semble être composé de.

Objet de classe

Alors, qu'est-ce qu'un objet de classe?

Comme son nom l'indique, un objet de classe est Fait référence à l '«objet de cette classe lorsque vous avez fini de définir la classe».

Par exemple

class A:
    x = 50
    print(10)

    def __init__(self):
        self.x = 100
        print(self.x)


print(A.x)
a = A()

Considérez la source ci-dessus.

Qu'arrivera-t-il au résultat de cette exécution?

c'est

10
50
100

On dirait.

Les classes Python sont exécutées telles quelles, à l'exception de def, et chaque ligne est exécutée comme une instruction normale.

Donc, si vous trouvez la classe A lors de la lecture d'un fichier Python d'en haut Descendez comme c'est

Et après avoir chargé la classe A, créez un objet de classe appelé A. Par conséquent, A devient un ** objet de classe ** lorsque la lecture est terminée.

Il est important que ce soit un objet de classe.

Objet d'instance

Les objets d'instance sont des objets créés à partir d '"objets de classe".

En particulier

--30 (généré à partir de int) --a (généré à partir de A) --Une fonction

Etc.

Parce qu'il est généré à partir d'un objet de classe

class A:

    def __init__(self):
        self.x = 100


a = A()
print(type(a))
print(type(30))
print(type(int))

'''
<class '__main__.A'>
<class 'int'>
<class 'type'>
'''

a est un objet de classe __main __. A de type a 30 est un objet de classe int de type 30

Il est devenu.

De cette manière, les objets d'instance sont créés à partir d'objets de classe.

Les fonctions sont également générées à partir d'un objet de classe appelé la classe de fonction.

application

Les fonctions sont également des objets. Un objet peut utiliser des attributs. Surtout parce que la fonction est un objet d'instance dont les attributs peuvent être définis librement.

Par exemple

Vous pouvez créer une fonction appelée.

def can_load_matplotlib():
    if can_load_matplotlib.cache is None:
        try:
            import matplotlib
        except ImportError:
            can_load_matplotlib.cache = False
        else:
            can_load_matplotlib.cache = True
    return can_load_matplotlib.cache


can_load_matplotlib.cache = None

print(can_load_matplotlib())

Préparez la fonction can_matplotlib.

Le fichier Python crée uniquement l'identité (mémoire) que "la fonction est sur cette ligne ~ ~" jusqu'à ce que la fonction soit exécutée.

Donc, tout d'abord, dans le code ci-dessus

--Il existe une fonction appelée can_load_matplotlib. --can_load_matplotlib est un objet d'instance de la classe Function, et les attributs peuvent être définis librement de l'extérieur, donc ajoutez un attribut de cache. --Lorsque vous exécutez la fonction, elle essaiera en interne car elle est None pour la première fois.

Vous pouvez écrire le code.

J'ai rencontré ce code lorsque j'ai copié le code du type étranger GitHub, et j'ai trouvé que c'était incroyable. Mais quelle vitesse la mise en cache augmente-t-elle? Je ne sais pas.

finalement

En Python, nous avons vu que les classes, les nombres et les chaînes sont tous des objets.

Je voudrais écrire en faisant la distinction entre une instance et un objet de classe.

Les références

Recommended Posts

[Road to Intermediate] Python semble être tous des objets
Une route vers Python intermédiaire
[Road to Intermediate] Comprendre les propriétés Python
[Route vers Python intermédiaire] Utiliser des opérateurs ternaires
[Route vers Python intermédiaire] Utiliser des expressions lambda
[Route vers Python intermédiaire] Résumé du lien de l'article
[Python] Il semble y avoir quelque chose appelé __dict__
[Route vers Python intermédiaire] Définir la fonction __getattr__ dans la classe
[Road to Intermediate Python] Définissez dans votre propre classe
[Road to Intermediate Python] Installer des packages en masse avec pip
[Route vers Python intermédiaire] Utiliser l'instruction if dans la notation d'inclusion de liste
[Road to Intermediate Python] Permet des opérations de comparaison pour des classes uniques
Road to Intermediate Linux: Network Edition
6 façons d'enchaîner des objets en Python
[Road to Intermediate Python] Appelez une instance de classe comme une fonction avec __call__
[Route vers Python intermédiaire] Spécifiez dynamiquement la méthode d'exécution par nom de variable
[Python] Road to snakes (1) Construction de l'environnement
La route de la compilation vers Python 3 avec Thrift
J'ai essayé d'implémenter ce qui semble être un outil de snipper Windows avec Python
Python a fini par être reconnu jusqu'à présent.
[Python] La route du serpent (4) Numpy
[Introduction à Python3 Jour 12] Chapitre 6 Objets et classes (6.3-6.15)
[Python] La route du serpent (6) Manipuler les pandas
[Introduction à Python3 Jour 11] Chapitre 6 Objets et classes (6.1-6.2)
[Road to Intermediate] Que sont les * args, ** kwargs de Python?
Mis à jour vers Python 2.7.9
À partir de Python 3.10, le formulaire retourné par inspect.signature () semble être basé sur typing.get_type_hints ().
"Backport" vers python 2
[Python] Erreur de valeur: les tableaux doivent tous avoir la même longueur
Préparation au contrôle des objets rhino avec des scripts dans Grasshopper / Python
[Python] tkinter Code susceptible d'être réutilisé
[Python] pandas Code susceptible d'être réutilisé
Seuls les tableaux de taille 1 peuvent être convertis en scalaires Python
[Road to Intermediate] Utiliser les variables de fonction intégrées de Python
[Python] Road to the Serpent (5) Jouez avec Matplotlib
python> Est-il possible de faire des commentaires en ligne?> Il semble que ce soit sur plusieurs lignes
Ce qui semble être un modèle pour la partie d'entrée standard du pro de la concurrence en python3