接口或类的存根方法
你能解释一下“stubbing out functions or classes
”这个概念吗?这个概念来自于这篇文章。
class Loaf:
pass
这个类没有定义任何方法或属性,但从语法上讲,定义里必须有点东西,所以你可以用“pass”。“pass”是Python中的一个保留字,意思就是“继续往下走,这里没什么好看的”。它是一个什么都不做的语句,当你在创建函数或类的框架时,用它作为占位符非常合适。
谢谢你
6 个回答
7
请注意,你可以像这样简化函数:
def get_name(self) -> str : ...
def get_age(self) -> int : ...
(没错,这段代码在Python中是有效的!)
有时候,第三方库会动态地给一个对象添加函数,而你希望能有类型提示,这时候简化函数就很有用。这个情况我碰到过一次 :-)
8
“存根”是一个占位符类或函数,它目前还没有实际功能,但需要存在,以便定义这个类或函数。简单来说,你可以在还没写具体功能之前,就先用它的一些方面,比如把它放到一个集合里或者作为回调函数传递。
使用存根是一种在很多情况下都很有用的技巧,包括:
- 团队开发:通常,主程序员会提供一些类的框架,里面填充了一些方法的存根,并附上注释说明这些方法应该做什么,具体的实现则留给其他团队成员来完成。
- 迭代开发:使用存根可以让你从部分实现开始;代码虽然还不完整,但依然可以编译。后续的迭代中会逐步完善细节。
- 演示目的:如果某个方法或类的内容在演示中不重要,通常会省略,只留下存根。
28
占位函数或类
这指的是写出类或函数的框架,但还没有具体实现它们。比如,我可能会创建一个类:
class Foo(object):
def bar(self):
pass
def tank(self):
pass
我只是写了函数的框架,因为还没有实现它们。不过,我觉得这样做并不是一个好主意。相反,你应该这样做:
class Foo(object):
def bar(self):
raise NotImplementedError
def tank(self):
raise NotImplementedError
这样,如果你在实现之前不小心调用了这个方法,就会出现错误,而不是什么都不发生。