# Created on savesnippets.com · https://savesnippets.com/yWkxdvKh8Z84FT from typing import Protocol class Closeable(Protocol): def close(self) -> None: ... def safe_use(resource: Closeable) -> None: try: # ... do work pass finally: resource.close() class File: def close(self): print("file closed") class Connection: def close(self): print("conn closed") safe_use(File()) # ✓ — has close() safe_use(Connection()) # ✓ — has close() # safe_use("hello") # mypy error — str has no close()