Python 3:访问父属性,Linter 错误
Python 3: Accessing Parent Attributes, Linter Error
我在 Python 3.8 中使用 VS Code 和 PyLint 正确访问父属性时遇到一些问题。
PyLint 在下面列出的伪代码中的第二个文件中给我一个错误。
文件 1:
class Parent:
def __init__(self, parentAttr):
self.parentAttr= parentAttr
文件 2:
class Child(Parent):
def __init__(self, parentAttr, childAttr):
super().__init__(parentAttr)
self.childAttr= childAttr
def anyFunction(self):
在下一行(第 7 行)中,Linter 在“self”下划线。以红色表示:
在定义第 8 行之前访问成员 'parentAttr'。pylint(access-member-before-definition)
tmp = self.parentAttr
self.parentAttr= tmp
代码正常工作。但是我应该如何正确地做这些事情而不出现这个错误呢?
您确定文件 2 的第 7 行或文件 1 的第 3 行没有错字吗?您是否正在导入您认为正在导入的“父级”class?我尝试重现你的问题,vscode+pylint 没有在我的机器上抱怨你的代码。
老实说,我不明白为什么会这样,您做的是对的,至少在您提供的 pseudo-code 中是这样。如果它抱怨,那一定是因为某个地方的拼写错误,以及您尚未检测到的代码中的潜在错误。
我同意 Olivier 的观点——鉴于您在单个文件或多个文件中的伪代码,我无法复制它。
有时会出现pylint无法处理的问题,但这很简单,应该没问题。
在更复杂的示例中,您的选择如下:
- 创建一个虚拟 class var(即在 init 函数之外),当
__init__()
被调用时被覆盖
- 使用
# pylint: disable=access-member-before-definition
或短代码形式手动抑制 pylint 警告,例如 # pylint: disable=E1101
- 调查抽象基础classes
- 为您的特定用例(例如 django 的)获取一个合适的 plyint 插件,它有额外的逻辑来处理那些特定的动态属性
我在 Python 3.8 中使用 VS Code 和 PyLint 正确访问父属性时遇到一些问题。
PyLint 在下面列出的伪代码中的第二个文件中给我一个错误。
文件 1:
class Parent:
def __init__(self, parentAttr):
self.parentAttr= parentAttr
文件 2:
class Child(Parent):
def __init__(self, parentAttr, childAttr):
super().__init__(parentAttr)
self.childAttr= childAttr
def anyFunction(self):
在下一行(第 7 行)中,Linter 在“self”下划线。以红色表示:
在定义第 8 行之前访问成员 'parentAttr'。pylint(access-member-before-definition)
tmp = self.parentAttr
self.parentAttr= tmp
代码正常工作。但是我应该如何正确地做这些事情而不出现这个错误呢?
您确定文件 2 的第 7 行或文件 1 的第 3 行没有错字吗?您是否正在导入您认为正在导入的“父级”class?我尝试重现你的问题,vscode+pylint 没有在我的机器上抱怨你的代码。
老实说,我不明白为什么会这样,您做的是对的,至少在您提供的 pseudo-code 中是这样。如果它抱怨,那一定是因为某个地方的拼写错误,以及您尚未检测到的代码中的潜在错误。
我同意 Olivier 的观点——鉴于您在单个文件或多个文件中的伪代码,我无法复制它。
有时会出现pylint无法处理的问题,但这很简单,应该没问题。
在更复杂的示例中,您的选择如下:
- 创建一个虚拟 class var(即在 init 函数之外),当
__init__()
被调用时被覆盖 - 使用
# pylint: disable=access-member-before-definition
或短代码形式手动抑制 pylint 警告,例如# pylint: disable=E1101
- 调查抽象基础classes
- 为您的特定用例(例如 django 的)获取一个合适的 plyint 插件,它有额外的逻辑来处理那些特定的动态属性