référence:
Déclarer une classe équivaut à créer une instance de la classe de type.
class C: ... ≡ C = type('C', ...)
référence:
La spécification metaclass
personnalise cette instanciation de type. Vous pouvez personnaliser la génération de classe lorsqu'une classe est déclarée en déclarant la métaclasse M
comme une sous-classe de type
et en remplaçant la méthode __new__
:
class C(metaclass=M): ...
Nous supposons qu'il n'est pas possible de forcer l'application de «M» lorsque toutes les classes sont générées [enquête requise].
référence:
La personnalisation de l'instanciation se fait en définissant (écrasant) les classes «new» et «init».
En particulier, en personnalisant «new», il est possible de générer et de renvoyer des instances de classe autres que la classe destinée à être générée («C» de «c = C (...)»). Cela peut être utilisé, par exemple, pour implémenter des classes d'usine.
D'autre part, comme vous le savez, __init__
est utilisé pour initialiser l'instance créée (définir les propriétés, etc.).
__prepare__
Je vais enquêter cette fois.
Recommended Posts