Docstring中未解决的参考警告 - Python 3.6 - Pycharm 17.1.4

时间:2017-07-15 19:38:27

标签: python-3.x inheritance documentation pycharm

我从PyCharm收到了关于未解决的参考的警告。 这里的代码结构相似,也应该收到警告。

class Parent:
    """
    === Attributes ===
    @type public_attribute_1: str
    """

    def __init__(self):
        public_attribute_1 = ''
    pass

class Child(Parent):
    """
    === Attributes ===
    @type public_attribute_1: str
        > Unresolved reference 'public_attribute_1'
    @type public_attribute_2: str
    """

    def __init__(self):
        Parent.__init__(self)
        public_attribute_2 = ''

    pass

我了解public_attribute_1未明确启动Child.__init__()Child.__init__()调用启动Parent.__init__(self)的{​​{1}} public_attribute_1。因此,引发的错误涉及可读性和文档而不是功能。

如何在不插入冗余的情况下使这些代码更具可读性,从而破坏整个继承点? 通过文档字符串和注释进行彻底记录是否足够,只是忽略来自PyCharm的警告?或者有一种pythonic方式吗?

1 个答案:

答案 0 :(得分:0)

这里有很多问题。

  1. Python 3中使用super()

  2. 您正在将它们称为“属性”,但这不是属性在Python中的工作方式。对细节进行着色,使用self

  3. 您的问题似乎与您希望docstring Child重新定义Parent的所有属性有关。从可维护性的角度来看,这是非常危险的,尽管有任何变化。当我看到某个类继承Parent时,如果我不熟悉Parent,我会转到Parent的定义(PyCharm使Ctrl + B变得容易}})。

    我会让别人说如果那是真的pythonic,但这就是我习惯工作的方式。无论如何,为了修复你的继承,你的代码看起来应该更像这样:

    class Parent:
        """
        === Attributes ===
        @type public_attribute_1: str
        """
    
        def __init__(self):
            self.public_attribute_1 = ''
    
    
    class Child(Parent):
        """
        === Attributes ===
        @type public_attribute_2: str
        """
    
        def __init__(self):
            super().__init__()
            self.public_attribute_2 = ''
            print(self.public_attribute_1)