PEP-526 与 class 变量的文档字符串不兼容?
PEP-526 Is not compatible with docstrings for class variables?
看来,如果我将 PEP-526 用于 class 级变量,我必须将它们记录在 class 的文档字符串中,在这种情况下,我需要选择我最喜欢的方式来执行此操作。
Python 3.6.4 pylint==1.8.4
class Joe(object):
counter: int = 0
"""This is a counter"""
pylint 说(正确,无论变量是否分配给):
W: 3, 2: String statement has no effect (pointless-string-statement)
这不是 PEP 526 与文档字符串不兼容;是皮林特不明白你做了什么。等待更新。
一些工具支持 class 变量的文档字符串概念,但它从来不是 Python 本身的一部分,PEP 526 也没有改变。
在这种情况下,pylint 将带有注释的行理解为字符串表达式,而不是 class 文档注释。这意味着它作为表达式的字符串不存储在任何变量中,并且在表达式执行后将丢失。同样的例子:
def foo():
a = 1
""" this is string expression, not doc string """
b = 2
在您的情况下,更正确的做法是将文档字符串放在顶部 class 正文:
class Joe(object):
"""This is a counter"""
counter: int = 0
而pylint理解正确:
************* Module tt
C: 4, 0: Trailing newlines (trailing-newlines)
C: 1, 0: Missing module docstring (missing-docstring)
R: 1, 0: Too few public methods (0/2) (too-few-public-methods)
看来,如果我将 PEP-526 用于 class 级变量,我必须将它们记录在 class 的文档字符串中,在这种情况下,我需要选择我最喜欢的方式来执行此操作。
Python 3.6.4 pylint==1.8.4
class Joe(object):
counter: int = 0
"""This is a counter"""
pylint 说(正确,无论变量是否分配给):
W: 3, 2: String statement has no effect (pointless-string-statement)
这不是 PEP 526 与文档字符串不兼容;是皮林特不明白你做了什么。等待更新。
一些工具支持 class 变量的文档字符串概念,但它从来不是 Python 本身的一部分,PEP 526 也没有改变。
在这种情况下,pylint 将带有注释的行理解为字符串表达式,而不是 class 文档注释。这意味着它作为表达式的字符串不存储在任何变量中,并且在表达式执行后将丢失。同样的例子:
def foo():
a = 1
""" this is string expression, not doc string """
b = 2
在您的情况下,更正确的做法是将文档字符串放在顶部 class 正文:
class Joe(object):
"""This is a counter"""
counter: int = 0
而pylint理解正确:
************* Module tt
C: 4, 0: Trailing newlines (trailing-newlines)
C: 1, 0: Missing module docstring (missing-docstring)
R: 1, 0: Too few public methods (0/2) (too-few-public-methods)