【发布时间】:2017-10-16 21:01:46
【问题描述】:
python 中__init__ 函数的正确类型注释是什么?
class MyClass:
...
以下哪个更有意义?
def __init__(self):
# type: (None) -> None
def __init__(self):
# type: (MyClass) -> MyClass
def __init__(self):
# type: (None) -> MyClass
因为我们通常会实例化为myclass = MyClass(),但__init__ 函数本身没有返回值。
【问题讨论】:
-
出于我自己的好奇心,这甚至是必要的/预期的吗?
-
@roganjosh 不,这是受支持的功能。我发现它很有用,因为它可以帮助我的 IDE(pycharm) 检测类型不匹配。 stackoverflow.com/questions/32557920/…
-
但是您已将其标记为 2.7,它甚至不支持类型提示。不过,我的问题范围更广,我不确定它对
__init__()是否有用。 -
@roganjosh,你是对的,它在这个例子中没有用。但是,我通常会将其扩展到其他接受变量的
__init__函数。我可以通过在 2.7 上安装打字和 pycharm 来使用一些功能。 -
@roganjosh Python 2 确实支持类型提示,请参阅 mypy docs 我认为应该尽可能添加类型,尤其是对于像
__init__和可调用类这样的东西。
标签: python python-2.7 typing