【发布时间】:2019-08-09 18:18:57
【问题描述】:
我理解 __init__() is required to return None,但是当 Visual Studio 为我自动完成派生类 __init__() 时,它会这样做:
class Base:
def __init__(self):
print('Base')
class Derived(Base):
def __init__(self):
return super().__init__() # This part is added by VS Code
这显然不是语法问题,因为 Base __init__ 正在返回 None,而派生类也将返回。
但是为什么还要麻烦呢? return 语句在这里有什么作用?
【问题讨论】:
-
是的,这很奇怪。
-
无论是
__init__还是常规方法,只要您在父类中调用某些东西,它可能会默认执行此操作?所以它以这种方式自动完成它,因为这就是它生成继承方法的基本实现的方式。 -
因为 VS Code 很笨?
__init__永远不应该返回值。将其添加到 5000 多个其他错误中here。 -
@wim 做了一些挖掘,似乎已经报告了:github.com/microsoft/python-language-server/issues/1082
-
@d_kennetz 我认为没有人称 VS Code 的 开发人员 愚蠢;不过,这是对代码的准确描述,从“它没有被编程为在
__init__和其他函数之间[智能] 区分”的意义上说。
标签: python inheritance super