【问题标题】:Autocomplete for instance variables实例变量的自动完成
【发布时间】:2018-05-13 07:02:59
【问题描述】:

我试图找到这个(看似简单的)问题的答案,但找不到。我试图让 Pycharm 向我展示实例变量的代码完成。类型提示似乎只在同一个函数中起作用。我也尝试在文档字符串中定义类型,但这仍然不起作用。如何让 Pycharm 向我显示实例变量的自动完成建议?

class Girl:
    gender = "female"

    def __init__(self, name:str):
        self.name = name
        self.name.capitalize()      # <- Pycharm shows me capitalize() as a method of name:str

    def capitalize_name(self):
        """
        :cvar name:str              # <-
        :type name:str              # <--- These don't
        :cvar self.name:str         # <--- help either
        :type self.name:str         # <-
        """
        self.name = self.name.....  # <- Pycharm does not know the type of self.name


alice = Girl(name="Alice")
alice.capitalize_name()

【问题讨论】:

  • self.name 不是类变量
  • @cricket_007 抱歉,我还希望将类变量定义为 None,然后在 init 方法中更新它们并混淆了术语。谢谢
  • 问题在于重新分配。如果将self.name = self.name.... 替换为print(self.name....),则完成工作。请填写问题here

标签: python-3.x pycharm type-hinting


【解决方案1】:

我从 2012 年就找到了这个解决方案,现在有更好的支持吗?

def capitalize_name(self):
    assert isinstance(self.name, str)
    self.name = self.name....   # <- works now

参考:https://intellij-support.jetbrains.com/hc/en-us/community/posts/205807049-How-to-improve-PyCharm-code-completion-auto-complete-

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 2014-02-19
    • 2018-02-09
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多