objectif
Utiliser closing pour des objets avec close() mais sans enter/exit.
code minimal
from contextlib import closing
class R:
def __init__(self): self.closed = False
def close(self): self.closed = True
r = R()
with closing(r):
pass
print(r.closed) # attendu: True
utilisation
from contextlib import closing
import io
buf = io.BytesIO(b"x")
with closing(buf):
data = buf.read()
print(data == b"x")
variante(s) utile(s)
from contextlib import closing
print(callable(closing))
notes
- Pratique pour intégrer des objets tiers dans un with.
- closing(x) renvoie un context manager qui appelle x.close() à la sortie.