2011-10-01 12 views
5

¿Puede explicar el concepto stubbing out functions or classes tomado de this article?Funciones de anulación o clases

class Loaf: 
    pass 

Esta clase no define ningún método o atributos, pero sintácticamente, es necesario que haya algo en la definición, por lo que utilizar pase. Esta es una palabra reservada de Python que solo significa "muévete, nada que ver aquí". Es una declaración que no hace nada, y es un buen marcador de posición cuando se está apagando funciones o classes.`

gracias

Respuesta

14

apagando funciones o clases

Esto se refiere a las clases de escritura o funciones pero aún no implementarlas. Por ejemplo, tal vez creo una clase:

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

    def tank(self): 
     pass 

He anulado las funciones porque aún no las he implementado. Sin embargo, no creo que este sea un gran plan. En su lugar, usted debe hacer:

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

    def tank(self): 
     raise NotImplementedError 

De esta forma si accidentalmente se llama al método antes de su aplicación, obtendrá un error, entonces no pasa nada.

+0

Por lo tanto, el troceo es solo un recordatorio de que necesito implementar algo? – xralf

+0

@xralf, casi. –

+0

@xralf No siempre. A veces quieres una función no operativa y la única forma de declarar un bloque vacío es mediante el uso de pase (algo así como llaves vacías en un lenguaje como '' C++ ''). – awesomo

1

La razón de pass es que Python es dependiente de la sangría y espera uno o más declaración indentada después de dos puntos (como después de class o function).

Cuando no tiene instrucciones (como en el caso de una función o clase apagada), todavía necesita haber al menos una instrucción sangrada, por lo que puede utilizar la instrucción especial pass como marcador de posición. Se podía poner tan fácilmente algo que no tiene efecto como:

class Loaf: 
    True 

y que también está bien (pero menos claro que el uso de pass en mi opinión).

1

Stubbing es una técnica en el desarrollo de software. Después de planificar un módulo o clase, por ejemplo dibujando su diagrama UML, comienza a implementarlo.

Como es posible que tenga que implementar muchos métodos y clases, comience con stubs. Esto simplemente significa que solo se escribe la definición de una función y se deja el código real para más adelante. La ventaja es que no olvidará los métodos y puede seguir pensando en su diseño mientras lo ve en el código.

4

Un 'stub' es una clase o función de marcador de posición que todavía no hace nada, pero que necesita estar allí para definir la clase o función en cuestión. La idea es que ya pueda usar ciertos aspectos de la misma (como ponerla en una colección o pasarla como una devolución de llamada), aunque todavía no haya escrito la implementación.

Stubbing es una técnica útil en una serie de escenarios, incluyendo: el desarrollo

  • Equipo: A menudo, el jefe de programación proporcionará esqueletos clase repletos de colillas de método y un comentario que describe lo que el método debe hacer, dejando la implementación real a otros miembros del equipo.
  • Desarrollo iterativo: Stubbing permite comenzar con implementaciones parciales; el código aún no estará completo, pero aún se compila. Los detalles se completan a lo largo de iteraciones posteriores.
  • Propósitos demostrativos: Si el contenido de un método o clase no es interesante para el propósito de la demostración, a menudo se omite, dejando solo stubs.
+1

Su respuesta también es aceptada para que sea completa y más interesante. – xralf

Cuestiones relacionadas