我有一个Python API,它可以返回一个对象,或者None如果没有找到对象。我想避免运行时异常/崩溃等,因此我想强制我的 API 的用户进行测试is not None。
例如:
x = getObject(...)
if x is not None:
print x.getName() #should be o.k.
y = getObject(...)
print y.getName() # print an error to the log
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
在 C++ 中的类似代码中,我可以添加一个标志,当我调用getName();时将检查该标志。该标志仅在将对象与 进行比较时设置NULL。
然而,在 Python 中,我无法重载该is运算符。还有其他方法可以在 Python 中实现该功能吗?
您不能强制使用 ,if x is not None因为您无法覆盖 的行为id()。该is运算符在内部比较两个被比较对象的 id,并且您无法控制该行为。
但是,您可以通过分别重写类的和方法来强制使用if x != None或。if not x == None__eq____ne__
然而,这不是一个好的做法。正如 @Kevin 在评论中指出的那样,is是与 进行比较时首选使用的运算符None。
我要做的就是为这个 API 编写清晰且有组织的文档,然后明确警告用户实例化可能会失败并返回None. 然后,通过提供内置getattr函数的示例或带有检查的示例,轻轻地推动用户采用良好实践is not None。
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |