diff --git a/jedi/helpers.py b/jedi/helpers.py index b1fe2a62..0f6bd363 100644 --- a/jedi/helpers.py +++ b/jedi/helpers.py @@ -159,13 +159,15 @@ def fast_parent_copy(obj): # __dict__ not available, because of __slots__ items = [] - try: - names = new_obj.__slots__ - except AttributeError: - # __slots__ not available (normal) - pass - else: - items += [(n, getattr(new_obj, n)) for n in names] + before = () + for cls in new_obj.__class__.__mro__: + try: + if before == cls.__slots__: + continue + before = cls.__slots__ + items += [(n, getattr(new_obj, n)) for n in before] + except AttributeError: + pass for key, value in items: # replace parent (first try _parent and then parent) diff --git a/jedi/parsing.py b/jedi/parsing.py index 44c55f3d..fcda72ca 100644 --- a/jedi/parsing.py +++ b/jedi/parsing.py @@ -1192,7 +1192,7 @@ class Name(Simple): So a name like "module.class.function" would result in an array of [module, class, function] """ - __slots__ = ('names', ) + __slots__ = ('names',) def __init__(self, module, names, start_pos, end_pos, parent=None): super(Name, self).__init__(module, start_pos, end_pos) self.names = tuple(n if isinstance(n, NamePart) else