return self
не только полезен в операторе with
, но также полезен во многих других ситуациях.
Например, когда вы открываете файл, используя:
with open("file") as f:
....
Функцияopen
фактически возвращает объект, который реализует __enter__
, и в его __enter__
он использует return self
, чтобы позволить вам связать этот экземпляр с переменной f
, чтобы вы могли сделать f.read
или что-то еще после.
В других ситуациях, например, если вы хотите позвонить в цепочку (может быть data = a.connect().get("key").to_dict()
).Вам нужно добавить return self
к connect
и get
.
Но, в конце концов, return self
- это не что иное, как возвращение нормальной переменной.