2011-10-01 63 views
5

您能否解釋從this article取得的概念stubbing out functions or classes殘肢功能或類別

class Loaf: 
    pass 

這個類沒有定義任何方法或屬性,但是從語法上,需要有東西在清晰度,讓你用傳球。這是一個Python保留字,意思是「一起移動,在這裏看不到任何東西」。那就是什麼都不做的語句,這是一個很好的佔位符,當你刪空函數或classes.`

謝謝

回答

14

刪空函數或類

這是指寫作類或功能,但還沒有實現它們。例如,也許我創建了一個類:

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

    def tank(self): 
     pass 

因爲我還沒有實現它們,所以我將這些函數剔除了。但是,我不認爲這是一個偉大的計劃。相反,你應該做的:

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

    def tank(self): 
     raise NotImplementedError 

這樣,如果你不小心調用該方法才執行,你會得到一個錯誤,那麼沒有發生。

+0

所以,殘樁只是提醒我需要實施一些東西? – xralf

+0

@xralf,非常。 –

+0

@xralf並非總是如此。有時候你想要一個沒有操作的函數,聲明一個空塊的唯一方法是使用pass(類似於象C++這樣的語言中的空花括號)。 – awesomo

1

原因pass是,Python是縮進依賴,預計一個或更多冒號後面的縮進語句(如在classfunction之後)。

如果沒有任何語句(如存在停用的函數或類),則仍然需要至少一個縮進語句,因此可以使用特殊的pass語句作爲佔位符。你可以很容易地把東西帶不一樣的效果:

class Loaf: 
    True 

而且也很好(但不是在我看來,使用pass不太清楚)。

1

Stubbing是一種軟件開發技術。在你規劃了一個模塊或類之後,例如通過繪製它的UML圖,你就可以開始實現它。

由於您可能需要實施很多方法和類,因此您需要從存根開始。這僅僅意味着你只寫下一個函數的定義,並留下實際的代碼供以後使用。優點是你不會忘記方法,你可以在代碼中看到它的同時繼續思考你的設計。

4

'stub'是一個佔位符類或函數,它現在還沒有做任何事情,但需要在那裏才能定義所討論的類或函數。這個想法是,你已經可以使用它的某些方面(比如把它放在一個集合中,或者把它作爲一個回調函數傳遞),儘管你還沒有編寫實現。

成株是在許多情況下一個有用的技術,其中包括:

  • 團隊開發:通常情況下,首席程序員將提供充滿方法存根和描述的方法應該做的註解,使類骨架其他團隊成員的實際執行情況。迭代開發:Stubbing允許從部分實現開始;代碼將不會完整,但它仍然編譯。細節在後面的迭代過程中被填充。
  • 示範目的:如果方法或類的內容對演示的目的不感興趣,通常會被忽略,只留下存根。
+1

您的回答也屬於接受,以使其完整且更有趣。 – xralf