Я хотел бы использовать декоратор деко , чтобы изменить методы __enter __ и __exit __ . Код запускается, но обертка не выполняется в разделе с . Найдите фактический вывод ниже, за которым следует ожидаемый вывод и, наконец, код.In __init__
-------------------
In __enter__
-------------------
In wrapper
Blah, blah, blah
-------------------
In __exit__
< /code>
Ожидаемый вывод: < /p>
In __init__
-------------------
In wrapper
In __enter__
-------------------
In wrapper
Blah, blah, blah
-------------------
In wrapper
In __exit__
< /code>
class contMgr():
def __init__(self):
print("In __init__")
pass
def __enter__(self):
print("In __enter__")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("In __exit__")
pass
def __call__(self, *args, **kwargs):
print("In __call_")
def brol():
print("brol")
def deco(func):
def wrapper(*args,**kwargs):
print("In wrapper")
result = func(*args, **kwargs)
return result
return wrapper
@deco
def test():
print("Blah, blah, blah")
mgr = contMgr()
mgr.__enter__ = deco(mgr.__enter__)
mgr.__exit__ = deco(mgr.__exit__)
print("------------------------")
with mgr:
print("------------------------")
test()
print("------------------------")
Подробнее здесь: https://stackoverflow.com/questions/795 ... ce-methods
Как украсить методы __enter__ и __exit__ экземпляра? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение