Python Language La métaclasse par défaut


Exemple

Vous avez peut-être entendu dire que tout en Python est un objet. C'est vrai, et tous les objets ont une classe:

>>> type(1)
int

Le littéral 1 est une instance de int . Permet de déclarer une classe:

>>> class Foo(object):
...    pass
...

Maintenant, permet de l'instancier:

>>> bar = Foo()

Quelle est la classe de bar ?

>>> type(bar)
Foo

Nice, le bar est une instance de Foo . Mais quelle est la classe de Foo elle-même?

>>> type(Foo)
type

Ok, Foo lui-même est une instance de type . Qu'en est-il du type lui-même?

>>> type(type)
type

Alors, quelle est une métaclasse? Pour l'instant, supposons que ce n'est qu'un nom de fantaisie pour la classe d'une classe. Plats à emporter:

  • Tout est un objet en Python, donc tout a une classe
  • La classe d'une classe s'appelle une métaclasse
  • La métaclasse par défaut est type , et de loin c'est la métaclasse la plus courante

Mais pourquoi devriez-vous connaître les métaclasses? Eh bien, Python lui-même est assez "piratable", et le concept de métaclasse est important si vous faites des choses avancées comme la méta-programmation ou si vous voulez contrôler la façon dont vos classes sont initialisées.