[Python] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt

Wenn ich den Handhabungsprozess usw. mit einem Dekorateur präzise schreiben möchte, verwende ich eine Metaklasse, aber ich vergesse immer, wie es geht, also mache dir eine Notiz

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] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt
Fraktal zum Erstellen und Spielen mit Python
[REAPER] Wie man Reascript mit Python spielt
Probleme mit pseudo-privaten Python-Variablen und Klassenvererbung
Python: Klassen- und Instanzvariablen
Python-Klassen- und Instanzvariablen
So schleifen und spielen Sie ein GIF-Video mit openCV ab
[How to!] Lerne und spiele Super Mario mit Tensorflow !!
Python: So verwenden Sie Async mit
Erste Schritte mit Python
[Lass uns mit Python spielen] Bildverarbeitung zu Monochrom und Punkten
So berechnen Sie das Datum mit Python
So schreiben Sie eine Meta-Klasse, die sowohl Python2 als auch Python3 unterstützt
[Python] Erbt eine Klasse mit Klassenvariablen
So melden Sie sich mit Python bei AtCoder an und senden automatisch
So importieren Sie CSV- und TSV-Dateien mit Python in SQLite
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Verwendung von Umgebungsvariablen für Serverless Framework und Python und Verwaltung von Phasen
Umgang mit Fehlern bei der Installation von Python und Pip mit Choco
Ich war süchtig nach falschen Klassenvariablen und Instanzvariablen in Python
[ROS2] So spielen Sie eine Bag-Datei mit Start im Python-Format ab
So erstellen Sie eine Python- und Jupyter-Ausführungsumgebung mit VSCode
Erstellen Sie mit Class einen Python-Funktionsdekorator
So verpacken und verteilen Sie Python-Skripte
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Dynamisches Definieren von Variablen in Python
So installieren und verwenden Sie pandas_datareader [Python]
[Python] Wie man eine Klasse iterierbar macht
So arbeiten Sie mit BigQuery in Python
Wie man einen Taschentest mit Python macht
Ich möchte mit aws mit Python spielen
So zeigen Sie Python-Japanisch mit Lolipop an
Python: Verwendung von Einheimischen () und Globalen ()
Verwendung von __slots__ in der Python-Klasse
Wie man mit Python-Flüchen Japanisch eingibt
[Python] Berechnen von MAE und RMSE
Verwendung von Python zip und Aufzählung
Verwendung ist und == in Python
So installieren Sie Python3 mit Docker Centos
Spielen Sie mit 2016-Python
[Einführung in Python] So beurteilen Sie die Authentizität mit der if-Anweisung (True und None)
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Hochladen mit Heroku, Flask, Python, Git (4)
Lesen einer CSV-Datei mit Python 2/3
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
Wie man Spaß am Programmieren mit Minecraft hat (Ruby, Python)
So generieren Sie eine Sequenz in Python und C ++
Strategie zur Monetarisierung mit Python Java
So erstellen Sie erklärende Variablen und Zielfunktionen
Unterschied zwischen Variablen und Selbst. Variablen in der [Python] -Klasse
[Python] Zeichnen mehrerer Diagramme mit Matplotlib
[Python] Wie man Excel-Dateien mit Pandas liest
So beschneiden Sie ein Bild mit Python + OpenCV
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100