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'
有什么区别
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'