Python Language Fonctionnalité personnalisée avec des métaclasses


Exemple

La fonctionnalité dans les métaclasses peut être modifiée de sorte que chaque fois qu'une classe est construite, une chaîne est imprimée sur la sortie standard ou une exception est levée. Cette métaclasse affichera le nom de la classe en cours de construction.

class VerboseMetaclass(type):

    def __new__(cls, class_name, class_parents, class_dict):
        print("Creating class ", class_name)
        new_class = super().__new__(cls, class_name, class_parents, class_dict)
        return new_class

Vous pouvez utiliser la métaclasse comme ceci:

class Spam(metaclass=VerboseMetaclass):
    def eggs(self):
        print("[insert example string here]")
s = Spam()
s.eggs()

La sortie standard sera:

Creating class Spam
[insert example string here]