diff --git a/jedi/inference/value/klass.py b/jedi/inference/value/klass.py index 9f7e4982..13a483e3 100644 --- a/jedi/inference/value/klass.py +++ b/jedi/inference/value/klass.py @@ -115,7 +115,11 @@ class ClassFilter(ParserTreeFilter): annassign = expr_stmt.children[1] if annassign.type == 'annassign': # TODO this is not proper matching - if 'ClassVar' not in annassign.children[1].get_code(): + + # If there is an =, the variable is obviously also + # defined on the class. + if 'ClassVar' not in annassign.children[1].get_code() \ + and '=' not in annassign.children: return False # Filter for name mangling of private variables like __foo diff --git a/test/completion/pep0526_variables.py b/test/completion/pep0526_variables.py index 6af77d91..39168339 100644 --- a/test/completion/pep0526_variables.py +++ b/test/completion/pep0526_variables.py @@ -57,7 +57,7 @@ Foo.baz Foo().baz class VarClass: - var_instance1: int = 1 + var_instance1: int = '' var_instance2: float var_class1: typing.ClassVar[str] = 1 var_class2: typing.ClassVar[bytes] @@ -77,9 +77,9 @@ class VarClass: self.var_ -#? ['var_class1', 'var_class2'] +#? ['var_class1', 'var_class2', 'var_instance1'] VarClass.var_ -#? +#? int() VarClass.var_instance1 #? VarClass.var_instance2