LINUX.ORG.RU

История изменений

Исправление micronekodesu, (текущая версия) :

Я видел что ты написал, а если бы почитал тред то видел бы что это уже предлагали.

Любые типы, в том числе и собственные, в том числе и всякие .get_data() обрабатываются тривиально.

>>> class MyMegaClass:
...   def get_data(cls):
...     return 'ololo'
... 
>>> foo = {'bar': MyMegaClass()}
>>> getpath(foo, 'bar', 'get_data()', default='')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "./script.py", line 7, in getpath
    return getpath(tree[key], *more_keys, default)
  File "./script.py", line 6, in getpath
    elif key in tree:
TypeError: argument of type 'MyMegaClass' is not iterable

Исходная версия micronekodesu, :

Я видел что ты написал, а если бы почитал тред то видел бы что это уже предлагали.

Любые типы, в том числе и собственные, в том числе и всякие .get_data() обрабатываются тривиально.

>>> class MyMegaClass:
...   def get_data(cls):
...     return 'ololo'
... 
>>> foo = {'bar': MyMegaClass()}
>>> getpath(foo, 'bar', 'get_data()', default='')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/tmp/se/script.py", line 7, in getpath
    return getpath(tree[key], *more_keys, default)
  File "/tmp/se/script.py", line 6, in getpath
    elif key in tree:
TypeError: argument of type 'MyMegaClass' is not iterable