Salut,
En ce moment, je suis en train de rédiger un tuto dans lequel je suis obligé d'implémenter une métaclasse pour résoudre un problème. Le hic, c'est que ce passage du tuto semble perdre vachement les lecteurs, donc j'ai envie d'y inclure une explication qui puisse au moins les aider à suivre (parce que la métaclasse en question n'est pas le sujet du tuto). De même, entwanne semble bloqué dans sa recherche d'idées pour améliorer son cours sur les métaclasses.
Je vous soumets donc la question, afin de faire un petit brainstorm dessus :
Comment expliqueriez-vous les métaclasses à quelqu'un qui connaît tout juste la POO en Python ?
À mon avis, une bonne approche, c'est de commencer par un constat bien concret dans la console : on peut manipuler une classe (l'assigner à une variable, récupérer ou modifier ses attributs) comme n'importe quel objet en Python. Donc une classe est un objet.
Si une classe est un objet, ça veut dire qu'elle est une instance de quelque chose :
1 2 | >>> type(str) <class 'type'> |
En somme, toutes les classes en Python sont des instances de type
. C'est pourquoi type
est une métaclasse : une classe qu'on instancie pour obtenir une nouvelle classe.
Par conséquent, pour créer une métaclasse, il suffit d'hériter de la classe type
.
Ensuite, il reste beaucoup de choses à expliquer, et je pense que dans un seul tuto on ne pourrait pas toutes les faire, mais si on devait sélectionner les notions les plus importantes à connaître quand on veut programmer des métaclasses, selon vous ça serait lesquelles ?
C'est à vous !