LINUX.ORG.RU
Ответ на: комментарий от t184256

Ну-ка, ну-ка, с этого места по подробнее... Прямо без named функции?

Вообще легко:

class Try(object):
    def __init__(self, fn):
        try:
            self._val = fn()
        except Exception as e:
            self._e = e
            self._val = e

    def catch(self, exc, fn):
        if isinstance(self._e, exc):
            self._val = fn()
        return self

    def __getattr__(self, item):
        return getattr(self._val, item)

    def __str__(self):
        return str(self._val)

    def __repr__(self):
        return repr(self._val)


>>> Try(lambda: 1 / 0).catch(ZeroDivisionError, lambda: 50)
50
holuiitipun
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.