2011-10-01 21 views
5

Czy możesz wyjaśnić pojęcie stubbing out functions or classes zaczerpnięte z this article?Funkcje lub klasy zagłuszania

class Loaf: 
    pass 

Klasa ta nie definiuje żadnych metod i atrybutów, ale składniowo, tam musi być coś w definicji, więc użyć przepustkę. Jest to słowo zarezerwowane w Pythonie, które oznacza po prostu "poruszaj się dalej, nic tu nie widać". Jest to stwierdzenie, że nic nie robi, a to dobry zastępczy kiedy gasząc funkcji lub classes.`

dziękuję

Odpowiedz

14

gasząc funkcji lub klas

Odnosi się to do klas piśmie lub funkcji, ale jeszcze ich realizacji. Na przykład, może tworzę klasę:

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

    def tank(self): 
     pass 

Zablokowałem funkcje, ponieważ jeszcze ich nie zaimplementowałem. Jednak nie sądzę, że jest to świetny plan. Zamiast tego, należy zrobić:

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

    def tank(self): 
     raise NotImplementedError 

tamtędy jeśli przypadkowo wywołać metodę, zanim zostanie wdrożony, dostaniesz błąd wtedy nic nie dzieje.

+0

Karczowanie jest tylko przypomnieniem, że muszę coś wdrożyć? – xralf

+0

@ xralf, prawie tyle. –

+0

@xralf Nie zawsze. Czasem potrzebujesz funkcji no-op, a jedynym sposobem deklarowania pustego bloku jest użycie pass (rodzaj pustych nawiasów klamrowych w języku takim jak '' C++ ''). – awesomo

1

Powodem pass jest to, że Python jest wcięcie zależne i oczekuje jeden lub więcej wgłębioną instrukcję po dwukropku (np. po class lub function).

Gdy nie masz żadnych instrukcji (jak w przypadku zgasionej funkcji lub klasy), nadal musi być co najmniej jedno wcięte oświadczenie, więc możesz użyć specjalnego oświadczenia pass jako symbolu zastępczego. Można równie dobrze umieścić coś bez efektu podobnego:

class Loaf: 
    True 

i to też w porządku (ale mniej jasne niż przy użyciu pass moim zdaniem).

1

Stubbing to technika w tworzeniu oprogramowania. Po zaplanowaniu modułu lub klasy, na przykład poprzez narysowanie diagramu UML, zaczynasz go wdrażać.

Ponieważ konieczne może być wdrożenie wielu metod i klas, należy zacząć od kodów pośredniczących. Oznacza to po prostu zapisanie definicji funkcji i pozostawienie kodu na później. Zaletą jest to, że nie zapomnisz metod i będziesz mógł nadal myśleć o swoim projekcie, widząc go w kodzie.

4

"Karczek" jest klasą lub funkcją zastępczą, która nie robi jeszcze nic, ale musi tam być, aby zdefiniować daną klasę lub funkcję. Chodzi o to, że możesz już używać pewnych jego aspektów (takich jak umieszczenie go w kolekcji lub przekazanie go jako wywołania zwrotnego), nawet jeśli jeszcze nie napisałeś implementacji.

Stubbing jest użyteczną techniką w wielu scenariuszach, w tym: rozwój

  • drużyny: Często, główny programista zapewni klasy szkielety wypełnionych odcinki sposób i komentarz opisujący jaka metoda powinna zrobić, pozostawiając faktyczne wdrożenie do innych członków zespołu.
  • Rozwój iteracyjny: Stubbing pozwala na rozpoczęcie z częściowymi implementacjami; kod nie będzie jeszcze kompletny, ale nadal się kompiluje. Szczegóły są wypełniane podczas późniejszych iteracji.
  • Cele demonstracyjne: jeśli zawartość metody lub klasy nie jest interesująca dla celów demonstracji, często jest pomijana, pozostawiając tylko kody pośredniczące.
+1

Twoja odpowiedź należy również do akceptacji, aby była kompletna i bardziej interesująca. – xralf

Powiązane problemy