使super的方法的PyCharm自动完成参数

时间:2018-07-27 06:52:36

标签: python autocomplete pycharm

考虑以下代码:

class A:
  def __init__(self, foo=None):
    pass

class B(A):
  def __init__(self, bar=None, **kwargs):
    super().__init__(**kwargs)

当我开始输入B(时,PyCharm会在自动完成窗口,快速文档等中帮助显示bar。但是,它不会显示foo

我已使foo成为类B的显式自变量,但是由于我有很多这样的自变量,因此这变得非常重复。我想避免这样做,同时让PyCharm向我展示所有论点。

如何让PyCharm做到这一点?

1 个答案:

答案 0 :(得分:0)

简短的答案是不可能的。这是由于在键入时PyCharm不会运行代码。 Python是一种具有多重继承的动态语言,IDE很难检查所有基类中的所有参数,尤其是因为与Java不同,可以省略对基类__init__()函数的调用。

还要注意这个片段:

class B(A):
  def __init__(self, bar=None, **kwargs):
    super().__init__(**kwargs)

强制foo只能作为关键字参数而不是位置参数来传递,而A类允许它作为位置参数来传递。

但是,如果键入是一个问题,我会建议ctrl + O,这是覆盖的快捷方式。如果在空类中执行此操作,它将创建一个__init__()方法,该方法具有基类的参数和对super的调用。如果文档有问题,只需为该方法写一个文档字符串