Article précédent
J'aurais aimé utiliser contextmanager
depuis le début sans la difficulté de décorer ...
yo.py
from contextlib import contextmanager
import random
class Prot:
def __init__(self):
pass
@contextmanager
def yoyo(self, hey):
print('gacha.') # __enter__
yield hey # as
print('Everything Done Right.') # __exit__
def yo_gacha(self, y):
yo = [y*i for i in range(10)]
return yo[random.randint(0, 9)]
if __name__ == '__main__':
p = Prot()
with p.yoyo('hey') as y:
print(p.yo_gacha(y))
contextlib.contextmanager
est un décorateur qui s'applique avec
à une bonne sensation, et le divise en __enter__
et __exit__
avec yield
entre les deux.
Un tiret est sacrifié, mais la description est facile et très facile à comprendre
Il est facile de comprendre que si vous le passez avec yield
, vous pouvez le recevoir avec as
.
Il vaut peut-être mieux utiliser un décorateur lorsque je veux emballer diverses choses, mais j'ai appris