问题来源:
class xx:
def __init__(self) -> NoReturn:
pass
pycharm编译器提示如下问题:
init should return None
根因探索:
- None 是Python的一个特殊的数据类型,用于表示空值或者没有值。当一个函数没有显式返回值时,它默认返回 None。这也是大多数函数和方法的默认行为,包括 init 方法。
- NoReturn 是 typing 模块中的一个特殊类型注解,用于表示一个函数不会返回任何结果,因为它永远不会正常结束执行。通常,这意味着函数会抛出异常或者执行如 sys.exit() 这样的操作以退出程序。
例如,下面的函数将返回 None,即使没有显式的 return 语句:
def my_function():
pass # 隐式返回 None
from typing import NoReturn
def my_function() -> NoReturn:
raise RuntimeError("This function always raises an exception")
from typing import NoReturn
def stop() -> NoReturn:
raise RuntimeError('no way')
xx = stop()
在这个例子中,my_function 会抛出一个异常,所以它不会有返回值,不仅是不返回 None,而是根本就不会有任何返回过程,因为函数执行会在抛出异常时被中断。
总的来说,None 是一个实际的值,而 NoReturn 是一个类型注解,用于描述函数的行为(即函数不会正常结束执行)