Bonjour à tous

Petite question (j'ère sur la toile depuis pas mal de temps et je ne trouve pas la moindre piste ...) : Lorsque j'ai une classe, quelle méthode est appelée lorsque je print cette classe ? Je dit bien la classe (et pas une instance de cette classe).

Le but serait de faire qqch comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
def MakeClass(clsname):
    class Class():
         name = clsname
 
    return Class
 
X = MakeClass('X')
print(X)
mais où print(X) me renverrai qqch contenant le nom donné en paramètre de la factory (ici 'X'), plutôt que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<class '__main__.MakeClass.<locals>.Class'>
qui ne permet pas de faire la différence entre 2 classes différentes fabriquées avec cette même factory.

J'ai vu des choses comme ca aussi sur la toile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
def MakeClass(clsname):
    class Class(): pass
 
    Class.__name__ = clsname
    return Class
 
X = MakeClass('X')
print(X)
mais bon à part définir un nouvel attribut (que ce soit name ou __name__) ça ne change manifestement pas grand chose puisque lorsqu'on fait print(X) ces attributs ne semblent pas utilisés.

Merci

Bonne journée