Объяснение Python '__ входит __' и '__ выход __'

Я видел это в чьем-то коде.Что это значит?

    def __enter__(self):
        return self

    def __exit__(self, type, value, tb):
        self.stream.close()

from __future__ import with_statement#for python2.5 

class a(object):
    def __enter__(self):
        print 'sss'
        return 'sss111'
    def __exit__(self ,type, value, traceback):
        print 'ok'
        return False

with a() as s:
    print s


print s
311
задан dreftymac 28 February 2018 в 14:25
поделиться

1 ответ

Используя эти волшебные методы ( __ входят __ , __ выход __ ) позволяет вам осуществлять объекты, которые могут использоваться легко с с заявление.

Идея заключается в том, что он позволяет легко построить код, который нуждается в некотором 'cleandown' код выполняется (думать о нем как try-finally блок). Дополнительные объяснения здесь .

Полезным примером может быть объект подключения к базе данных (который затем автоматически закрывает соединение, как только соответствующая инструкция 'with' выходит за пределы области действия):

class DatabaseConnection(object):

    def __enter__(self):
        # make a database connection and return it
        ...
        return self.dbconn

    def __exit__(self, exc_type, exc_val, exc_tb):
        # make sure the dbconnection gets closed
        self.dbconn.close()
        ...

Как объяснялось выше, используйте этот объект с оператором с (возможно, потребуется выполнить из __ будущего __ import with_statement в верхней части файла, если вы находитесь на Python 2,5).

with DatabaseConnection() as mydbconn:
    # do stuff

PEP343 - Оператор «with» также имеет хорошую запись.

370
ответ дан 23 November 2019 в 01:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: