2011-07-14 8 views

Respuesta

22

No hay diferencia para la recolección de basura - en ambos casos se dará a conocer una referencia al objeto señalado por self.fps_display. El que debe usar depende de si desea que el nombre todavía exista (aunque ahora apunta a un objeto diferente, None) o no.

+2

Normalmente voy por la asignación a 'None', porque es más fácil (y más bonita) para ir' si es self.fps_display None' que 'si hasattr (auto, "fps_display")'. Excepción si se necesita 'None 'para un significado diferente (pero luego usaría' Ellipsis' para indicar "no presente"). –

+2

¿De hecho, el del no llama directamente al proceso de recolección de basura, solo disminuye el refcounter y deja la variable colgando en el espacio de basura para que el recolector lo limpie? – Red15

+3

@ Red15: Correcto. –

13

Tiene un objeto con un atributo, fps_display.

No debe hacer que el atributo sea extrañamente opcional o que a veces falte.

Si se trata de un atributo de primera clase, y razonablemente visible, debe establecerse en None para liberar recursos. Eliminar el atributo es espeluznante porque el objeto ahora tiene atributos opcionales y genera asombrosas excepciones.

self.fps_display = None 
Cuestiones relacionadas