2016-04-19 7 views
0

Ich möchte einen Pylint-Plug schreiben, mit dem ich eine Art Syntax für die Methoden erzwinge, die mit einem bestimmten Decorator versehen sind.Erzwingen von Funktionsbenennungskonventionen

Zum Beispiel alle Funktionen, die mit @specialfunction Dekorateur eingerichtet sind, müssen mit Wort „get_“ Start

@specialfunction 
def get_foo(self): 
... 


@specialfunction 
def get_bar(self): 
... 

Wenn mein Modul alle Methoden, die mit @specialfunction eingerichtet, aber nicht anfangen, mit get_, es sollte einen Fehler werfen. Kannst du mir bitte vorschlagen, wie man ein solches Pylint-Plugin schreibt?

Antwort

0

Ist die Überprüfung zur Laufzeit gut genug? Es ist einfacher als ein Pylint Plugin zu schreiben:

def specialfunction(f): 
    if not f.__name__[:4] == 'get_': 
     raise TypeError("Can't use the decorator on a non-get function") 
    return f 

@specialfunction 
def get_foo(x): 
    return "foo" 

@specialfunction # TypeError raised here 
def bar(y, z): 
    return "bar" 

This'd typischerweise die Fehler zu erhöhen, wenn Sie die fehlerhaften Modul importieren.

+0

Das ist ein interessanter Weg, aber erfüllt nicht ganz den Zweck. Danke für den Vorschlag trotzdem :) –