Classes et objets anonymes en Python : Exploration avancée
La fonction intégrée type() de Python retourne la classe à laquelle appartient un objet. En Python, une classe — qu'elle soit intégrée ou définie par l'utilisateur — est un objet de type class.
Exemple
class MaClasse:
def __init__(self):
self.mavar = 10
obj = MaClasse()
print('classe de int', type(int))
print('classe de list', type(list))
print('classe de dict', type(dict))
print('classe de MaClasse', type(MaClasse))
print('classe de obj', type(obj))
Sortie :
classe de int <class 'type'>
classe de list <class 'type'>
classe de dict <class 'type'>
classe de MaClasse <class 'type'>
type() possède une version à trois arguments :
Syntaxe
nouvelle_classe = type(nom, bases, dico)
Cette syntaxe permet de créer une classe dynamiquement. Les trois arguments sont :
nom : nom de la classe (devient l'attribut
__name__).bases : tuple des classes parentes (peut être vide).
dico : dictionnaire formant l'espace de noms de la nouvelle classe (attributs, méthodes).
Créer une classe anonyme
On peut créer une classe anonyme avec type(). L'argument nom est une chaîne vide, le second est un tuple contenant object (toute classe hérite de object), le troisième est un dictionnaire vide pour l'instant.
Anon = type('', (object,), {}) Créer un objet anonyme
Pour instancier cette classe anonyme :
obj = Anon()
print("type de obj:", type(obj))
Résultat :
type de obj: <class '__main__.'>
Exemple complet : classe et objet anonymes avec attributs et méthodes
On peut ajouter dynamiquement des variables et méthodes d'instance :
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())
Sortie :
5 6
Python
- Maîtriser le contrôle de boucles en Python : break et continue
- Maîtriser l'héritage Python : concepts, syntaxe et exemples pratiques
- Créer des archives ZIP en Python : du répertoire complet à la sélection personnalisée de fichiers
- Maîtriser les expressions régulières en Python : Guide pratique
- Comprendre les variables globales, locales et non locales en Python
- Feuille de triche Python Basics : Types de données essentiels, Dictionnaires, Listes & Fonctions
- Python list.index() : Comment Trouver les Positions d'Éléments avec Exemples Pratiques
- Accéder aux Données Web avec urllib de Python : Guide Pratique
- Questions d'entretien Python & Réponses : Guide ultime de préparation