2011-10-01 16 views
5

Puoi spiegare il concetto stubbing out functions or classes preso da this article?Funzioni di stubazione o classi

class Loaf: 
    pass 

Questa classe non definisce nessun metodo o attributo, ma sintatticamente, ci deve essere qualcosa nella definizione, in modo da utilizzare pass. Questa è una parola riservata a Python che significa semplicemente "andare avanti, niente da vedere qui". E 'una dichiarazione che non fa nulla, ed è un buon segnaposto quando si sta spegnendo funzioni o classes.`

grazie

risposta

14

spegnendo funzioni o classi

Rappresentano corsi di scrittura o funzioni, ma non ancora la loro attuazione. Ad esempio, forse creo una classe:

class Foo(object): 
    def bar(self): 
     pass 

    def tank(self): 
     pass 

Ho cancellato le funzioni perché non le ho ancora implementate. Tuttavia, non penso che questo sia un grande piano. Invece, si dovrebbe fare:

class Foo(object): 
    def bar(self): 
     raise NotImplementedError 

    def tank(self): 
     raise NotImplementedError 

In questo modo se si chiama accidentalmente il metodo prima di essere attuata, si otterrà un errore poi nulla accade.

+0

Quindi, lo stub è solo un promemoria per cui devo implementare qualcosa? – xralf

+0

@xralf, praticamente. –

+0

@xralf Non sempre. A volte vuoi una funzione no-op e l'unico modo per dichiarare un blocco vuoto è usare il pass (un po 'come le parentesi graffe vuote in un linguaggio come '' C++ ''). – awesomo

1

La ragione di pass è che Python è indentazione dipendente e si aspetta che uno o più istruzione rientrata dopo i due punti (come dopo class o function).

Quando non ci sono istruzioni (come nel caso di una funzione o classe di stub), è comunque necessario che sia presente almeno un'istruzione rientrata, quindi è possibile utilizzare l'istruzione speciale pass come segnaposto. Si potrebbe facilmente mettere qualcosa senza alcun effetto come:

class Loaf: 
    True 

e che è anche bene (ma meno chiara rispetto all'utilizzo pass a mio parere).

1

Stubbing è una tecnica nello sviluppo di software. Dopo aver pianificato un modulo o una classe, ad esempio disegnando il suo diagramma UML, si inizia a implementarlo.

Come potrebbe essere necessario implementare molti metodi e classi, si inizia con gli stub. Ciò significa semplicemente che scrivi solo la definizione di una funzione e lascia il codice effettivo per dopo. Il vantaggio è che non dimenticherai i metodi e puoi continuare a pensare al tuo design mentre lo vedi in codice.

4

Uno 'stub' è una classe segnaposto o una funzione che non esegue ancora nulla, ma deve essere presente in modo che la classe o la funzione in questione siano definite. L'idea è che puoi già usarne alcuni aspetti (come metterlo in una raccolta o passarlo come callback), anche se non hai ancora scritto l'implementazione.

Stubbing è una tecnica utile in una serie di scenari, tra cui: lo sviluppo

  • della squadra: Spesso, il programmatore capo fornirà scheletri di classe pieni di mozziconi di metodo e un commento che descrive ciò che il metodo dovrebbe fare, lasciando l'effettiva implementazione ad altri membri del team.
  • Sviluppo iterativo: lo stubing consente l'avvio con implementazioni parziali; il codice non sarà ancora completo, ma viene comunque compilato. I dettagli sono compilati nel corso delle iterazioni successive.
  • Scopi dimostrativi: se il contenuto di un metodo o di una classe non è interessante ai fini della dimostrazione, viene spesso tralasciato, lasciando solo gli stub.
+1

Anche la tua risposta è accettata per renderla completa e più interessante. – xralf