删除函数或类

xra*_*alf 8 python stub stubbing

你能解释一下这个概念stubbing out functions or classes取自这篇文章

class Loaf:
    pass  
Run Code Online (Sandbox Code Playgroud)

这个类没有定义任何方法或属性,但从语法上讲,定义中需要有一些东西,所以你使用pass.这是一个Python保留字,意思是"移动,没有什么可看到的".这是一个什么都不做的声明,当你在删除函数或类时,它是一个很好的占位符

谢谢

Win*_*ert 26

剔除功能或类

这是指编写类或函数但尚未实现它们.例如,也许我创建一个类:

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

     def tank(self):
         pass
Run Code Online (Sandbox Code Playgroud)

我已经删除了函数,因为我还没有实现它们.但是,我不认为这是一个伟大的计划.相反,你应该这样做:

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

     def tank(self):
         raise NotImplementedError
Run Code Online (Sandbox Code Playgroud)

这样,如果您在实现之前意外调用该方法,您将收到错误,然后什么也没发生.


tda*_*ers 6

“存根”是一个占位符类或函数,尚不执行任何操作,但需要在此占位符,以便定义相关的类或函数。这个想法是,即使您尚未编写实现,您也可以使用它的某些方面(例如将其放入集合中或将其作为回调传递)。

存根是在许多情况下的有用技术,包括:

  • 团队开发:首席程序员通常会提供类骨架,其中填充了方法存根和描述方法应执行的注释,而实际的实现留给了其他团队成员。
  • 迭代开发:存根允许从部分实现开始。该代码尚不完整,但仍可以编译。在以后的迭代过程中将填写详细信息。
  • 演示目的:如果方法或类的内容出于演示目的不有趣,则通常将其遗漏,仅保留存根。


Dom*_*TTI 6

请注意,您可以像这样存根函数:

def get_name(self) -> str : ...
def get_age(self) -> int : ...
Run Code Online (Sandbox Code Playgroud)

(是的,这是有效的 Python 代码!)

存根由第三方库动态添加到对象的函数可能很有用,并且您需要输入提示。发生在我身上......一次:-)


Bea*_*ker 6

省略号...pass存根更可取。

pass意味着“什么都不做”,而...意味着“这里应该有一些东西”——它是未来代码的占位符。效果是一样的,但是意义不同。