Python — контент-менеджер классов. Почему метод __exit__ опускается, если вы помещаете внутри него выход?Python

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Python — контент-менеджер классов. Почему метод __exit__ опускается, если вы помещаете внутри него выход?

Сообщение Гость »


класс OracleConnected(): защита __init__(сам): self.oracle_username = oracle_username[1] self.oracle_password = oracle_password[1] self.dsn = cx_Oracle.madesn(имя хоста[1], порт[1], sid[1]) защита __enter__(сам): пытаться: print('Тогда это') cx_Oracle.init_oracle_client(lib_dir=lib_dir) self.connection = cx_Oracle.connect(user=self.oracle_username, пароль=self.oracle_password, dsn=self.dsn) кроме исключения как e: print(f'Ошибка подключения к Oracle: \n{e}') еще: выход на самостоятельное соединение def __exit__(self, exc_type, exc_val, exc_tb): print('Наконец-то сделай это') #self.connection.close() дать self.connection.close() с OracleConnected() в качестве соединения: print('Сначала сделайте это') cur = следующий (соединение).курсор() cur.execute("выберите *Из платежей, где id = 324986093") печать (cur.fetchall()) [*]Если все останется по-прежнему, я получу: Сначала сделайте это Тогда это [(324986093, 391908893, 391908893, 1228, Нет, datetime.datetime(2023, 4, 24, 0, 0)]
[*]
Вместо урожайности self.connection.close() -> напишите просто self.connection.close(): Сначала сделайте это Тогда это [(324986093, 391908893, 391908893, 1228, Нет, datetime.datetime(2023, 4, 24, 0, 0)] Наконец-то сделай это

Итак, вопрос в том, что такого особенного в доходности, что она доставляет мне столько хлопот?

П.С. Кроме того, вместо выхода self.connection.close() -> return self.connection.close() Я получил желаемый ответ: Сначала сделайте это Тогда это [(324986093, 391908893, 391908893, 1228, Нет, datetime.datetime(2023, 4, 24, 0, 0)] Наконец-то сделай это

П.С.С. Вдобавок ко всему, позвольте спросить — представьте, что мы разгадаем эту тайну. Еще одна проблема в том же коде: если я получаю сообщение об ошибке при подключении к серверу с помощью self.connection и говорю, что выдает ошибку, тогда я передал эту ошибку exit, и выход также выдает мне ошибку – как справиться и с этой ситуацией. Значит, я не передал его exit?

Я пытался читать документацию, но ничего не помогло. Мне просто интересно, каковы причины пропуска exit
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»