builtin_methods calculation of iterable works now with the mro.

This commit is contained in:
Dave Halter
2016-01-07 15:41:20 +01:00
parent 8216ff3b11
commit 06cb82830a
3 changed files with 15 additions and 6 deletions

View File

@@ -37,9 +37,14 @@ class IterableWrapper(tree.Base):
@memoize_default()
def _get_names_dict(self, names_dict):
try:
builtin_methods = self.builtin_methods
except AttributeError:
builtin_methods = {}
for cls in type(self).mro():
try:
builtin_methods = dict(builtin_methods, **cls.builtin_methods)
except AttributeError:
pass
if not builtin_methods:
return names_dict
dct = {}
@@ -276,6 +281,10 @@ class DictComprehension(Comprehension, ArrayMixin):
def _get_comp_for(self):
return self._get_comprehension().children[3]
def py__iter__(self):
for keys, values in self._iterate():
yield keys
def py__getitem__(self, index):
for keys, values in self._iterate():
for k in keys:

View File

@@ -132,7 +132,7 @@ list({a - 1: 3 for a in [1]})[0]
d = {a - 1: b for a, b in {1: 'a', 3: 1.0}.items()}
#? int()
list(d)[0]
#? str()
#? str() float()
d.values()[0]
#? str()
d[0]

View File

@@ -86,9 +86,9 @@ d.values()[0]
##? int() list
dict(d).values()[0]
#? str() float()
#? str()
d.items()[0][0]
#? int() list
#? int()
d.items()[0][1]
# -----------------