[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse

Lorsque je veux écrire le processus de manipulation, etc. de manière concise à l'aide d'un décorateur, j'utilise une métaclasse, mais j'oublie toujours comment le faire, alors prenez note

from types import MethodType, FunctionType, LambdaType

class MetaClass(type):
    def __new__(cls, name, bases, attr):
        def is_excutable(v):
            return isinstance(v, (MethodType, FunctionType, LambdaType))

        target = attr['target']

        for k, v in attr.items():
            if is_excutable(v) and getattr(v, '__flag', False):
                target.append((getattr(v, '__command'), v))

        klass = type.__new__(cls, name, bases, attr)
        klass.target = target
        return klass


def decorator(command=''):
    def decorate(func):
        setattr(func, '__flag', True)
        setattr(func, '__command', command)
        return func
    return decorate

class Klass(metaclass=MetaClass):
    target = []

    @decorator('command_name')
    def test_method(self):
        pass

print('Klass.target:', Klass.target)

Recommended Posts

[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse
Fractal pour faire et jouer avec Python
[REAPER] Comment jouer à Reascript avec Python
Problème avec les variables pseudo-privées Python et l'héritage de classe
Python: variables de classe et d'instance
Variables de classe et d'instance Python
Comment boucler et lire une vidéo gif avec openCV
[Comment!] Apprenez et jouez à Super Mario avec Tensorflow !!
Python: comment utiliser async avec
Comment démarrer avec Python
[Jouons avec Python] Traitement d'image en monochrome et points
Comment calculer la date avec python
Comment écrire une classe méta qui prend en charge à la fois python2 et python3
[Python] Hériter d'une classe avec des variables de classe
Comment se connecter à AtCoder avec Python et soumettre automatiquement
Comment importer des fichiers CSV et TSV dans SQLite avec Python
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Comment utiliser les variables d'environnement Serverless Framework et Python et gérer les étapes
Comment gérer les erreurs lors de l'installation de Python et de pip avec choco
J'étais accro aux variables de classe et aux variables d'instance erronées en Python
[ROS2] Comment lire un fichier bag avec le lancement au format python
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Créer un décorateur de fonction Python avec Class
Comment empaqueter et distribuer des scripts Python
[Introduction à Python] Comment utiliser la classe en Python?
Comment définir dynamiquement des variables en Python
Comment installer et utiliser pandas_datareader [Python]
[Python] Comment rendre une classe itérable
Comment utiliser BigQuery en Python
Comment faire un test de sac avec python
Je veux jouer avec aws avec python
Comment afficher le japonais python avec lolipop
python: Comment utiliser les locals () et globals ()
Comment utiliser __slots__ dans la classe Python
Comment entrer le japonais avec les malédictions Python
[Python] Comment calculer MAE et RMSE
Comment utiliser le zip Python et énumérer
Comment utiliser is et == en Python
Comment installer python3 avec docker centos
Jouez avec 2016-Python
[Introduction à Python] Comment juger de l'authenticité avec l'instruction if (True et None)
Comment obtenir la différence de date et d'heure en secondes avec Python
Comment télécharger avec Heroku, Flask, Python, Git (4)
Comment lire un fichier CSV avec Python 2/3
Grattage de la nourriture avec python et sortie en CSV
Comment profiter de la programmation avec Minecraft (Ruby, Python)
Comment générer une séquence en Python et C ++
Stratégie sur la façon de monétiser avec Python Java
Comment créer des variables explicatives et des fonctions objectives
[python] Différence entre variable et self. Variable dans la classe
[Python] Comment dessiner plusieurs graphiques avec Matplotlib
[Python] Comment lire des fichiers Excel avec des pandas
Comment recadrer une image avec Python + OpenCV
[Python] Comment lire les données de CIFAR-10 et CIFAR-100