summaryrefslogtreecommitdiff
path: root/pylint
diff options
context:
space:
mode:
authorDaniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>2021-11-05 16:54:26 +0100
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2021-11-05 21:26:53 +0100
commit0a1ebd488fcdf7bf306615aba29e401ce49e3e10 (patch)
treeb7d08cf00ff9255e12fa4f1a7571cd9ff53f1676 /pylint
parent96e84595194073ea54a8c7730b86125049c0f4f9 (diff)
downloadpylint-git-0a1ebd488fcdf7bf306615aba29e401ce49e3e10.tar.gz
Fix crash on checking private members on ``__class__``
Closes #5261
Diffstat (limited to 'pylint')
-rw-r--r--pylint/checkers/classes.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/pylint/checkers/classes.py b/pylint/checkers/classes.py
index 730f2e659..82fcc8a61 100644
--- a/pylint/checkers/classes.py
+++ b/pylint/checkers/classes.py
@@ -945,6 +945,7 @@ a metaclass class method.",
)
def _check_unused_private_variables(self, node: nodes.ClassDef) -> None:
+ """Check if private variables are never used within a class"""
for assign_name in node.nodes_of_class(nodes.AssignName):
if isinstance(assign_name.parent, nodes.Arguments):
continue # Ignore function arguments
@@ -953,12 +954,15 @@ a metaclass class method.",
for child in node.nodes_of_class((nodes.Name, nodes.Attribute)):
if isinstance(child, nodes.Name) and child.name == assign_name.name:
break
- if (
- isinstance(child, nodes.Attribute)
- and child.attrname == assign_name.name
- and child.expr.name in ("self", "cls", node.name)
- ):
- break
+ if isinstance(child, nodes.Attribute):
+ if not isinstance(child.expr, nodes.Name):
+ break
+ if child.attrname == assign_name.name and child.expr.name in (
+ "self",
+ "cls",
+ node.name,
+ ):
+ break
else:
args = (node.name, assign_name.name)
self.add_message("unused-private-member", node=assign_name, args=args)