Я пытаюсь этот простой код в Python 3:ReferenceError: слабо не ссылается объект больше не существует, Python3
import mysql.connector
class App():
def __init__(self):
self.conexion = mysql.connector.connect(user='?',
password='?',
host='?',
db='?')
self.cursor = self.conexion.cursor()
def __del__(self):
self.conexion.close()
self.cursor.close() # The code works if i remove this line;
myApp = App()
код работает на Python 2 и Python 3, если я удалить self.cursor.close()
линию. Это должно произойти?
Проблема заключается в том, когда я пытаюсь использовать self.cursor.close()
внутри __del__
, код работает, если self.cursor.close()
находится внутри __init__
, в противном случае, я даже могу создавать таблицы.
Ошибка Я испытываю это:
Exception ignored in: <bound method MySQL_App.__del__ of <__main__.MySQL_App object at 0x7f6f87f42278>>
Traceback (most recent call last):
File "filename.py", line 22, in __del__
File "/usr/lib/python3.4/site-packages/mysql/connector/cursor.py", line 338, in close
File "/usr/lib/python3.4/site-packages/mysql/connector/cursor.py", line 310, in _have_unread_result
ReferenceError: weakly-referenced object no longer exists
Почему вы определяете '__del __()'? Это очень необычно. – SingleNegationElimination
Мне нужно закрыть соединения в конце. Я думаю, что лучший способ сделать это с помощью '__del __()' (не используется '__del__' в тех же ситуациях, что и деструктор?) – tjbrn
Хорошо, я изменил' __del __() 'на' End() 'и для некоторых причина, по которой это просто работает ... – tjbrn