Pregunta

Así que estoy usando miembros de la clase estática para poder compartir datos entre los métodos de clases y métodos estáticos de la misma clase (no sólo será 1 de instancias de la clase). Entiendo que esta bien, pero me pregunto cuando los miembros estáticos inicializadas? ¿Es en la importación? En el primer uso de la clase? Porque voy a estar llamando a los miembros estáticos de esta clase de más de 1 módulo (por lo tanto, más de 1 instrucción de importación). Serán todos los módulos de acceso a los métodos estáticos comparten los mismos miembros de datos estáticos? Y si mi principal cliente elimina la instancia de mi clase y, a continuación, vuelve a crear (sin necesidad de terminar por completo o cosas re-importación), se conservarán los miembros de mi datos?

¿Fue útil?

Solución

Ellos se iniciará en el momento de definición de clase, lo que va a ocurrir en el momento de importación, si va a importar la clase como parte de un módulo. Esto asumiendo un estilo definición miembro de la clase "estática" de esta manera:

class Foo:
    bar = 1

print Foo.bar # prints '1'

Tenga en cuenta que, siendo este un miembro de la clase estática, no es necesario crear una instancia de la clase.

La declaración de importación se ejecutará el contenido de un módulo de una sola vez, no importa cuántas veces o cuando se ejecuta.

Sí, los miembros estáticos será compartida por ningún código para acceder a ellos.

Sí, los miembros estáticos de una clase se mantendrán si se elimina un objeto cuyo tipo es que la clase:

# Create static member
class Foo:
    bar = 1

# Create and destroy object of type Foo
foo = Foo()
del foo

# Check that static members survive
print Foo.bar # Still prints '1'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top