mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 14:04:26 +08:00
Use a class_context instead of a class_value for MethodValue
This commit is contained in:
@@ -110,7 +110,7 @@ class FunctionValue(use_metaclass(CachedMetaClass, FunctionMixin, FunctionAndCla
|
|||||||
if context.is_class():
|
if context.is_class():
|
||||||
return MethodValue(
|
return MethodValue(
|
||||||
context.inference_state,
|
context.inference_state,
|
||||||
context._value, # TODO private access!
|
context,
|
||||||
parent_context=parent_context,
|
parent_context=parent_context,
|
||||||
tree_node=tree_node
|
tree_node=tree_node
|
||||||
)
|
)
|
||||||
@@ -148,17 +148,17 @@ class FunctionValue(use_metaclass(CachedMetaClass, FunctionMixin, FunctionAndCla
|
|||||||
|
|
||||||
|
|
||||||
class MethodValue(FunctionValue):
|
class MethodValue(FunctionValue):
|
||||||
def __init__(self, inference_state, class_value, *args, **kwargs):
|
def __init__(self, inference_state, class_context, *args, **kwargs):
|
||||||
super(MethodValue, self).__init__(inference_state, *args, **kwargs)
|
super(MethodValue, self).__init__(inference_state, *args, **kwargs)
|
||||||
self.class_value = class_value
|
self.class_context = class_context
|
||||||
|
|
||||||
def get_default_param_context(self):
|
def get_default_param_context(self):
|
||||||
return self.class_value.as_context()
|
return self.class_context
|
||||||
|
|
||||||
def get_qualified_names(self):
|
def get_qualified_names(self):
|
||||||
# Need to implement this, because the parent value of a method
|
# Need to implement this, because the parent value of a method
|
||||||
# value is not the class value but the module.
|
# value is not the class value but the module.
|
||||||
names = self.class_value.get_qualified_names()
|
names = self.class_context.get_qualified_names()
|
||||||
if names is None:
|
if names is None:
|
||||||
return None
|
return None
|
||||||
return names + (self.py__name__(),)
|
return names + (self.py__name__(),)
|
||||||
|
|||||||
@@ -124,14 +124,14 @@ def execute(callback):
|
|||||||
if isinstance(value, BoundMethod):
|
if isinstance(value, BoundMethod):
|
||||||
if module_name == 'builtins':
|
if module_name == 'builtins':
|
||||||
if value.py__name__() == '__get__':
|
if value.py__name__() == '__get__':
|
||||||
if value.class_value.py__name__() == 'property':
|
if value.class_context.py__name__() == 'property':
|
||||||
return builtins_property(
|
return builtins_property(
|
||||||
value,
|
value,
|
||||||
arguments=arguments,
|
arguments=arguments,
|
||||||
callback=call,
|
callback=call,
|
||||||
)
|
)
|
||||||
elif value.py__name__() in ('deleter', 'getter', 'setter'):
|
elif value.py__name__() in ('deleter', 'getter', 'setter'):
|
||||||
if value.class_value.py__name__() == 'property':
|
if value.class_context.py__name__() == 'property':
|
||||||
return ValueSet([value.instance])
|
return ValueSet([value.instance])
|
||||||
|
|
||||||
return call()
|
return call()
|
||||||
|
|||||||
Reference in New Issue
Block a user