J'ai un ami qui aime utiliser des métaclasses, et qui les propose régulièrement comme solution.
Je suis d'avis que vous n'avez presque jamais besoin d'utiliser des métaclasses. Pourquoi ? parce que je me dis que si vous faites quelque chose comme ça à une classe, vous devriez probablement le faire à un objet. Et un petit redesign/refactor est en ordre.
La possibilité d'utiliser des métaclasses a amené beaucoup de gens, dans beaucoup d'endroits, à utiliser les classes comme une sorte d'objet de second ordre, ce qui me semble désastreux. La programmation doit-elle être remplacée par la métaprogrammation ? L'ajout des décorateurs de classe a malheureusement rendu cette pratique encore plus acceptable.
Alors, s'il vous plaît, je suis désespéré de connaître vos cas d'utilisation valables (concrets) des métaclasses en Python. Ou pour être éclairé sur la raison pour laquelle la mutation des classes est meilleure que la mutation des objets, parfois.
Je vais commencer :
Parfois, lors de l'utilisation d'une bibliothèque il est utile de pouvoir muter la classe d'une certaine manière.
(C'est le seul cas auquel je pense, et il n'est pas concret).
3 votes
C'est une excellente question. À en juger par les réponses ci-dessous, il est clair qu'il n'existe pas d'utilisation concrète des métaclasses.