2013-12-15 5 views
5

Sto modificando il mio codice sorgente Python con Eclipse e Pydev.Precompilazione di nuove funzioni in Eclipse e Pydev con docstring e eccezione "Non implementata"

Desidero documentare tutte le mie funzioni e generare un'eccezione "Non implementata" ogni volta che una funzione non è stata ancora implementata.

Per esempio quando si digita:

def foo(bar1,bar2): 

su ENTER, vorrei che a completamento automatico:

def foo(bar1,bar2): 
''' 
function foo 
@param bar1: 
@type: 
@param bar2: 
@type 
''' 
raise NotImplementedError("") 

C'è già un'opzione in Pydev o Eclipse per farlo? In caso contrario, c'è un modulo Python separato o uno script che lo farebbe correttamente?

+2

non è davvero chiaro cosa si sta cercando di fare qui. Cosa intendi per "documentare tutte le mie funzioni"? Il modo migliore per "documentare" le funzioni che hai intenzione di implementare ma non ancora implementate è semplicemente scrivere uno stub per la funzione e lasciare il corpo come "raise NotImplementedError" (magari con una docstring che spiega quale sarà la funzione per una volta implementato) – Iguananaut

risposta

5

Attualmente la documentazione può essere già generata.

cioè .: in una linea 'def', premendo Ctrl + 1 mostrerà l'opzione "Generated docstring" (il formato di coloro docstring potrà essere definito in Preferenze> pydev> editor di codice> style> docstring).

Per quanto riguarda lo raise NotImplementedError(""), al momento non è possibile aggiungerlo automaticamente.

Personalmente, quello che uso è un decoratore 'astratto' come ad esempio:

def abstract(func): 

def wrapper(self, *args, **kwargs): 
    msg = 'Method %r not implemented in class %r.' % (func.__name__, self.__class__) 
    raise NotImplementedError(msg) 

wrapper.__name__ = func.__name__ 
wrapper.__doc__ = func.__doc__ 
return wrapper 

E poi usare:

@abstract 
def my_func(xxx, yyy): 
    ... 

In questo modo se qualcuno chiama il codice, il messaggio sembra migliore:)

0

Non sono sicuro al 100% come eseguire tutto in una volta, ma può essere eseguito in due passaggi. Devi personalizzare i tuoi modelli di def. Vai a Finestra-> Pydev-> Editor-> Modelli. Scorri verso il basso per def, defc e defp e modificali. Quando si crea un nuovo metodo, iniziare a digitare def e utilizzare lo spazio di controllo due volte per accedere ai modelli. Seleziona il modello appropriato. Cambia il nome da metodo a quello che desideri e questo riempirà anche l'eccezione NotImplemented. Aggiungi i tuoi argomenti. Passo due, prima di lasciare la linea di definizione premere ctrl 1, e questo riempirà la stringa doc.

ho cambiato il mio DEFC a

def ${method}(self):${cursor} 
    raise NotImplemented('${method}') 
Problemi correlati