https://qiita.com/ganariya/items/fb3f38c2f4a35d1ee2e8
Il semble que Python soit tout un objet.
?? ?? ?? ?? ?? Vraiment? ?? ?? ?? ??
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).
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.
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
x = 50
print(10)
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.
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.
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.
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.