Articles of destructor

En Python 2.x debo llamar objeto .__ del__?

En Python 3.x todas las clases son subclases de object . En 2.x tienes que declarar explícitamente la class MyClass(object) . Y, como estoy intentando escribir tanto código compatible con 3.x como sea posible, estoy creando subclases de object . En mi progtwig, estoy usando el método __del__ , y quería saber si debería llamar […]

Casos de uso para __del__

¿Cuáles son los casos de uso en python 3 al escribir un método __del__ personalizado o confiar en uno de stdlib 1 ? Es decir, ¿en qué escenario es razonablemente seguro y puede hacer algo que es difícil hacer sin él? Por muchas buenas razones ( 1 2 3 4 5 6 ), la recomendación […]

Python ¿cómo asegurar que se llame al método __del __ () de un objeto antes de que el módulo muera?

Anteriormente, hoy hice esta pregunta sobre el __del__() de un objeto que utiliza un módulo importado. El problema fue que __del__() quiere hacer uso del módulo os , pero a veces (no siempre) el módulo ya se ha eliminado. Me dijeron que cuando un progtwig de Python termina, el orden en que se eliminan los […]

Limpieza de una conexión interna de pysqlite en la destrucción de objetos

Tengo un objeto con una conexión de base de datos interna que está activa durante toda su vida útil. Al final de la ejecución del progtwig, la conexión se debe confirmar y cerrar. Hasta ahora he usado un método de close explícito, pero esto es algo engorroso, especialmente cuando pueden ocurrir excepciones en el código […]

¿Qué tan pronto se llama a `__del__` después de que el recuento de referencias se reduzca a cero?

¿Qué tan pronto después de que el recuento de referencia llegue a cero se __del__ método __del__ ? ¿Promete el lenguaje que se haga de inmediato, antes de que se pueda ejecutar cualquier otro código de uso? ¿O puede cada implementación hacer lo que le gusta, retrasando potencialmente la llamada a __del__ arbitrariamente larga? Ignore […]

No puedo recibir una llamada de __dealloc__ al eliminar un objeto

Tengo la siguiente clase de C ++: .H class ALabSet: public LabSet { public: PyObject *m_obj; ALabSet(PyObject *obj); virtual ~ALabSet(); PyObject *GetPyObj(); }; .CPP ALabSet::ALabSet(PyObject *obj): LabSet() { this->m_obj = obj; // Provided by “cyelp_api.h” if (import_cyelp()) { } else { Py_XINCREF(this->m_obj); } } ALabSet::~ALabSet() { Py_XDECREF(this->m_obj); } PyObject *ALabSet::GetPyObj() { return this->m_obj; } Lo […]