Explorer les classes et les objets anonymes en Python
La fonction type() intégrée de Python renvoie la classe à laquelle appartient un objet. En Python, une classe, qu'elle soit intégrée ou définie par l'utilisateur, sont des objets de type class.
Exemple
class myclass:
def __init__(self):
self.myvar=10
return
obj = myclass()
print ('class of int', type(int))
print ('class of list', type(list))
print ('class of dict', type(dict))
print ('class of myclass', type(myclass))
print ('class of obj', type(obj))
Cela produira le résultat suivant −
class of int <class 'type'> class of list <class 'type'> class of dict <class 'type'> class of myclass <class 'type'>
Le type() a une version à trois arguments comme suit −
Syntaxe
newclass=type(name, bases, dict)
En utilisant la syntaxe ci-dessus, une classe peut être créée dynamiquement. Trois arguments de type fonction sont −
-
name - nom de la classe qui devient l'attribut __name__ de la nouvelle classe
-
bases - tuple composé de classes parents. Peut être vide s'il ne s'agit pas d'une classe dérivée
-
dict - dictionnaire formant l'espace de noms de la nouvelle classe contenant les attributs et les méthodes et leurs valeurs.
Créer une classe anonyme
Nous pouvons créer une classe anonyme avec la version ci-dessus de la fonction type(). L'argument name est une chaîne nulle, le deuxième argument est un tuple d'une classe, la classe d'objet (notez que chaque classe en Python est héritée de la classe d'objet). Nous ajoutons certaines variables d'instance comme troisième dictionnaire d'arguments. Nous le gardons vide pour l'instant.
anon=type('', (object, ), {})
Créer un objet anonyme
Pour créer un objet de cette classe anonyme −
obj = anon()
print ("type of obj:", type(obj))
Le résultat montre que l'objet est de classe anonyme
type of obj: <class '__main__.'>
Exemple de classe et d'objet anonymes
Nous pouvons également ajouter dynamiquement des variables d’instance et des méthodes d’instance. Jetez un oeil à cet exemple −
def getA(self):
return self.a
obj = type('',(object,),{'a':5,'b':6,'c':7,'getA':getA,'getB':lambda self : self.b})()
print (obj.getA(), obj.getB())
Cela produira le résultat suivant −
5 6
Python
- Échangez deux variables Python sans en utiliser une troisième
- Erreurs Python et exceptions intégrées
- Maîtriser la communication inter-thread en Python :synchronisation et partage de données
- Entrée, sortie et importation Python
- Convertir les horodatages Python en Datetime (et inversement) – Un guide rapide
- Installer PIP sous Windows :un guide complet étape par étape
- Maîtriser Python :6 façons efficaces de calculer le carré d'un nombre
- Python - Boucles
- Classe de données Python :une meilleure façon de stocker des données