python 中这两个相似的 __init__ 定义有什么区别?

what's the difference between those two similar __init__ definitions in python?

有什么区别

1)

def __init__(self): pass

2)

def __init__(self) -> None: pass

感谢您的帮助!

在第二个中,您 annotated 方法并明确表示 __init__ 方法的 return 值应该是 None.

如果正文中没有任何 return 语句,Python 中的每个 function/method 都将隐含地 return None__init__到returnNone是必须的,否则实例化会报错TypeError: __init__() should return None,

注释是可选的,如果您输入与指定值不同的值,也不会引发错误:

def fn() -> str:
    return 10

print(fn())  # 10

但是 returning None 对于 __init__ 是必须的。

class A:
    def __init__(self):
        return 10

obj = A()  # TypeError: __init__() should return None, not 'int'