2011-10-01 100 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