在Python中,NotImplementedError 是一个异常类,你可以通过调用它来抛出一个异常。通常,你会看到它像其他异常一样被调用(即使用括号),即使没有传递任何参数。
因此,虽然以下两种形式在功能上是等效的,因为 NotImplementedError 的构造函数不接受任何必须的位置参数:
raise NotImplementedError
raise NotImplementedError()
Python的官方文档和广泛接受的实践是使用带括号的形式,即使它不接受任何参数。这样做的好处是保持与其他异常的一致性,并清楚地表明你正在调用一个异常类的构造函数来创建一个异常实例。
所以,推荐的做法是:
def work(self):
raise NotImplementedError()
这样做更符合Python的惯例,并且在阅读代码时,对于其他Python开发者来说也更加清晰。
在 VSCODE 中如果安装了 Python 插件,安装 ctrl 点击一下 NotImplementedError
会跳到一个 pyi 文件
你可能会问 pyi
文件是啥? 和 cython 的 pyx
文件是一样的吗?
-
.pyi 文件通常与 Python 的类型注解和 mypy 类型检查器相关。.pyi 文件是 “Python Interface” 文件的缩写,它用于存储 Python 模块的类型注解信息,但不包含实际的实现代码。这些文件对于使用 mypy 或其他类型检查工具来验证 Python 代码的类型安全性非常有用。
-
例如,如果你有一个 Python 模块 example.py,你可以创建一个对应的 example.pyi 文件来为该模块中的函数、类和变量提供类型注解。这样,当你运行 mypy 来检查你的代码时,它会读取 .pyi 文件中的类型信息,并基于这些信息进行类型检查。
-
需要注意的是,.pyi 文件是可选的,并且通常只在你想要提供额外的类型信息以供类型检查器使用时才需要。如果你的代码已经包含了足够的类型注解,或者你不使用类型检查工具,那么你可能不需要 .pyi 文件。
总结一下:
.pyi 文件用于存储 Python 模块的类型注解信息,供类型检查器(如 mypy)使用。
NotImplementedError 是一个 Python 内置异常类,用于指示未实现的方法或功能。它与 .pyi 文件没有直接关系。