Как я могу назвать супер в декораторе метода в Python 3?

Как я могу заполнить ??? ?

 def ensure_finished(iterator): try: next(iterator) except StopIteration: return else: raise RuntimeError def derived_generator(method): def new_method(self, *args, **kwargs): x = method(self, *args, **kwargs) y = getattr(super(???, self), method.__name__)\ (*args, **kwargs) for a, b in zip(x, y): assert a is None and b is None yield ensure_finished(x) ensure_finished(y) return new_method 

One Solution collect form web for “Как я могу назвать супер в декораторе метода в Python 3?”

EDIT: Это не работает по причинам, указанным в комментариях. Я оставлю это здесь, чтобы следующий парень, пытающийся ответить, не делает то же самое (пока не появится реальный ответ).

Вы должны использовать type(self)

Пример: я немного упростил ваш код, но сущность все равно должна быть там

 def derived_generator(method): def new_method(self, *args, **kwargs): x = method(self, *args, **kwargs) y = getattr(super(type(self), self), method.__name__)\ (*args, **kwargs) for a, b in zip(y, x): yield a, b return new_method class BaseClass(object): def iterator(self): return [1, 2, 3] class ChildClass(BaseClass): @derived_generator def iterator(self): return [4, 5, 6] a = ChildClass() for x in a.iterator(): print(x) 
  • Как читать входы как целые числа?
  • Как использовать cache_clear () для python @ functools.lru_cache
  • Формат дампа PyYAML
  • PyEval_InitThreads в Python 3: Как / когда его называть? (сага продолжает тошноту)
  • «Протоколы нельзя использовать с isinstance ()» - почему бы и нет?
  • Возникли проблемы с time.sleep
  • Выполнить все итерации на итерабельном
  • Ошибка Python 3.5 OpenSSL
  •  
    Interesting Posts for Van-Lav

    Как удалить последнюю строку данных фрейма pandas

    assertRaises не удается, даже вызываемый вызывает требуемое исключение (python, unitest)

    Вставить Pymysql в нерабочее время

    Получение корня (главы) DiGraph в networkx (Python)

    virtualenv, который может найти перемещенные libraires (например, mysqlclient lib для MySQLdb)

    Как использовать модуль «json» для чтения в одном объекте JSON за раз?

    Аннотирование типа docstring Python – класс, а не экземпляр?

    Сценарий Python для подсчета числа строк во всех файлах в каталоге

    Демонстрация скрипта python в debian с использованием virtualenv

    Автоматический отступ для Python в Notepad ++

    сравнить объект с пустым кортежем с оператором 'is' в Python 2.x

    matplotlib: Понимание и изменение меток оси для графика рассеяния, обновляемого постепенно

    Search_fields в django python

    Каков самый быстрый способ создания веб-страниц CRUD для Google App Engine с использованием Python?

    Как получить доступ к удаленному хранилищу данных при запуске dev_appserver.py?

    Python - лучший язык программирования в мире.