diff --git a/jedi/inference/value/instance.py b/jedi/inference/value/instance.py index 8c88b96e..e08e7581 100644 --- a/jedi/inference/value/instance.py +++ b/jedi/inference/value/instance.py @@ -131,7 +131,7 @@ class AbstractInstanceValue(Value): # In this case we're excluding compiled objects that are # not fake objects. It doesn't make sense for normal # compiled objects to search for self variables. - yield SelfAttributeFilter(self, class_value, cls, origin_scope) + yield SelfAttributeFilter(self, class_value, cls.as_context(), origin_scope) class_filters = class_value.get_filters( origin_scope=origin_scope, @@ -416,15 +416,15 @@ class SelfName(TreeNameDefinition): """ This name calculates the parent_context lazily. """ - def __init__(self, instance, class_value, tree_name): + def __init__(self, instance, class_context, tree_name): self._instance = instance - self.class_value = class_value + self.class_context = class_context self.tree_name = tree_name @property def parent_context(self): return self._instance.create_instance_context( - self.class_value.as_context(), + self.class_context, self.tree_name ) @@ -477,14 +477,13 @@ class SelfAttributeFilter(ClassFilter): """ This class basically filters all the use cases where `self.*` was assigned. """ - def __init__(self, instance, instance_class, class_value, origin_scope): + def __init__(self, instance, instance_class, node_context, origin_scope): super(SelfAttributeFilter, self).__init__( class_value=instance_class, - node_context=class_value.as_context(), + node_context=node_context, origin_scope=origin_scope, is_instance=True, ) - self._specific_class_value = class_value self._instance = instance def _filter(self, names): @@ -503,7 +502,7 @@ class SelfAttributeFilter(ClassFilter): yield name def _convert_names(self, names): - return [SelfName(self._instance, self._specific_class_value, name) for name in names] + return [SelfName(self._instance, self._node_context, name) for name in names] def _check_flows(self, names): return names diff --git a/jedi/inference/value/klass.py b/jedi/inference/value/klass.py index 814534fa..9dc0911f 100644 --- a/jedi/inference/value/klass.py +++ b/jedi/inference/value/klass.py @@ -64,8 +64,8 @@ def apply_py__get__(value, instance, class_value): class ClassName(TreeNameDefinition): - def __init__(self, parent_context, class_value, tree_name, name_context, apply_decorators): - super(ClassName, self).__init__(parent_context, tree_name) + def __init__(self, class_value, tree_name, name_context, apply_decorators): + super(ClassName, self).__init__(class_value.as_context(), tree_name) self._name_context = name_context self._apply_decorators = apply_decorators self._class_value = class_value @@ -101,7 +101,6 @@ class ClassFilter(ParserTreeFilter): def _convert_names(self, names): return [ ClassName( - parent_context=self.parent_context, class_value=self._class_value, tree_name=name, name_context=self._node_context,