[PYTHON] Machen Sie einen Funktionsdekorateur

Ich möchte einen Dekorateur (mit Tag) erstellen und wiederverwenden, der die Vor- / Nachbearbeitung der Funktion wie unten gezeigt ausführt.

>>> @MyDecorator('any-tag')
... def foo():
...     print u'foo'
... 
>>> foo():

pre-action. tag=any-tag.
foo
post-action. tag=any-tag.

Mach es so.

class MyDecorator(object):
    
    def __init__(self, tag):
        self._tag = tag
    
    def __call__(self, f0):
        def decorated(*args, **kwargs):
            print u'pre-action. tag=' + self._tag
            ret = f0(*args, **kwargs)
            print u'post-action. tag=' + self._tag
            return ret
        return decorated

Version mit functools.wraps.

Danke @termoshtt (^ ◇ ^)

from functools import wraps

def MyDecorator(tag):
    def dec(f0):
        @wraps(f0)
        def decorated(*args, **kwargs):
            print u'pre-action. tag=' + tag
            ret = f0(*args, **kwargs)
            print u'post-action. tag=' + tag
            return ret
        return decorated
    return dec

Recommended Posts

Machen Sie einen Funktionsdekorateur
So erstellen Sie eine rekursive Funktion
[Python] Machen Sie die Funktion zu einer Lambda-Funktion
Python-Funktionsdekorateur
Erstellen Sie mit Class einen Python-Funktionsdekorator
Lass uns ein Squashspiel machen
Unterscheiden Sie eine Funktion mit zwei Variablen
Property Decorator verwenden?
Erstellen Sie eine Distanzmatrix
Ich mache ein Passwort!
Machen Sie einen Nyan-Knopf
Mit Dekorateur dekorieren
Mach ein Spiel im Tetris-Stil!
Erstellen Sie einen Base64-Decoder
[Übung] Erstellen Sie eine Watson-App mit Python! # 2 [Übersetzungsfunktion]
Erstellen Sie mit OpenCV eine Funktion zum Beschreiben japanischer Schriftarten
[Python] Stellen Sie sicher, dass die empfangene Funktion eine benutzerdefinierte Funktion ist
Erstellen Sie ein Blueqat-Backend ~ Teil 1
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Blueqat-Backend ~ Teil 2
Schreiben Sie eine Kerneldichtefunktion
So rufen Sie eine Funktion auf
[Django] Erstellen Sie ein Pulldown-Menü
Machen Sie einen LINE BOT (Chat)
Versuchen Sie, eine logistische Funktion zu zeichnen
Erstellen Sie ein Lesezeichen in Python
Machen Sie eine Lotterie mit Python
Machen Sie Responder zu einem Daemon (Dienst)
Beispiel für Funktionen höherer Ordnung (Dekoratoren) in Python
Was ist eine Rückruffunktion?
Einfach cProfile mit einem Dekorateur
Machen Sie ein Feuer mit kdeplot
Erstellen Sie einen Berechnungsbohrdruck
Verknüpfen Sie Python Enum mit einer Funktion, um es aufrufbar zu machen
Machen wir eine Remote-Rumba [Hardware]
[Python] Was ist eine Zip-Funktion?
Wie erstelle ich eine japanisch-englische Übersetzung?
Machen Sie eine Santa-Kennung aus einem Santa-Bild
Dekorateur 1
Machen Sie eine Tweet-Box für Pepper
Lassen Sie uns eine GUI mit Python erstellen.
Machen Sie einen Sound mit Jupyter Notebook
Machen wir einen Spot Sale Service 2
Erstellen Sie mit TensorFlow eine Gesichtserkennung
Eine Funktion, die einen zufälligen Namen zurückgibt
Machen wir einen Blockbruch mit wxPython
Machen wir einen Spot Sale Service 1
Wie erstelle ich einen Crawler?
Machen Sie die C-Kompilierung etwas einfacher
Python / Machen Sie ein Diktat aus einer Liste.
Erstellen Sie ein Empfehlungssystem mit Python
Dekorateur 2
[Python3] Definition eines Dekorators, der die Ausführungszeit einer Funktion misst
Python - Dynamische Aufruffunktion von String
[Blender] So erstellen Sie ein Blender-Plug-In
Erstellen Sie ein universelles Dekorationsframework für Python