Как сделать замыкание в классе Pyton?

Как реализовать замыкания в классе, есть класс и есть 2 функции само замыкание:

def _open(func):
    def actual(self):
        def wrapper():
            func()
        return wrapper
    return actual

и функция на которую я пытаюсь его применить:

@_open
def _create(self):
    # body

Класс

class MyClass:
    ...
    def _open(func):
        def actual(self):
            def wrapper():
                func()
            return wrapper
        return actual
    @_open
    def _create(self):
        # body

что я вызываю

my = MyClass(...)
my._create()

и хочу получить : вызов функции обернутый декоратором.

что я получаю : ничего, функция "вызвалась" но не вызвалась


Ответы (1 шт):

Автор решения: вася
from functools import wraps

class MyClass:
    def _open(func):
        @wraps(func)
        def wrapper(*args, **kw):
            print('open')
            return func(*args, **kw)
        return wrapper

    @_open
    def _create(self):
        print('create')

my = MyClass()
my._create()
→ Ссылка