Así que estoy usando miembros de clase estáticos para poder compartir datos entre métodos de clase y métodos estáticos de la misma clase (solo habrá 1 instanciación de la clase). Entiendo esto bien, pero me pregunto cuándo se inicializarán los miembros estáticos. ¿Está en importación? En el primer uso de la clase? Porque voy a llamar a los miembros estáticos de esta clase de más de 1 módulo (por lo tanto, más de 1 declaración de importación). ¿Todos los módulos que acceden a los métodos estáticos comparten los mismos miembros de datos estáticos? Y si mi cliente principal elimina la instancia de mi clase, y luego la recrea (sin terminar por completo ni volver a importar cosas), ¿se conservarán mis miembros de datos?Miembros de clase estáticos python
12
A
Respuesta
13
Se inicializarán en el tiempo de definición de clase, lo que ocurrirá en el momento de la importación si está importando la clase como parte de un módulo. Esto asumiendo un estilo de "estática" miembro de la clase definición así:
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 instrucción de importación ejecutará el contenido de un módulo exactamente una vez, sin importar cuántas veces o dónde se ejecute.
Sí, los miembros estáticos se compartirán con cualquier código que acceda 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'
Cuestiones relacionadas
- 1. Miembros estáticos de una clase de instancia
- 2. Bloqueo de miembros estáticos de una clase
- 3. ¿Cómo acceder a los miembros estáticos de una clase?
- 4. Inicializando miembros estáticos de una clase con plantilla
- 5. Clase de miembros estáticos vs. interfaz normal tipo c
- 6. ¿Debo usar miembros de datos estáticos? (C++)
- 7. Inicialización de miembros de datos estáticos
- 8. Herencia de miembros estáticos en C#
- 9. Métodos estáticos de la clase Python
- 10. Definición de los miembros estáticos en C++
- 11. miembros estáticos y aumentar la serialización
- 12. C++ herencia privada y miembros/tipos estáticos
- 13. SetWindowsHookEx, KeyboardProc y miembros no estáticos
- 14. Recolección de basura de los miembros estáticos
- 15. Clase de plantilla C++ con miembros estáticos - Lo mismo para todos los tipos de la clase
- 16. ¿Puede alinear funciones de miembros estáticos?
- 17. no estáticos miembros de datos Inicializadores preguntas
- 18. Inicialización de miembros de la clase de Python
- 19. especialización de plantillas para funciones de miembros estáticos; ¿cómo?
- 20. ¿Los miembros estáticos ayudan a la eficiencia de la memoria?
- 21. La herencia de los miembros estáticos en PHP
- 22. ¿Por qué las clases internas no pueden declarar miembros estáticos?
- 23. ¿Cómo serializar los miembros de datos estáticos de una clase de Java?
- 24. Son miembros estáticos de clases genéricas compartidas entre tipos
- 25. ¿Cómo y cuándo están dispuestos los miembros estáticos C#?
- 26. afirmativo estático para comprobar los miembros estáticos de datos de clase const?
- 27. ¿Cómo llamo a los miembros estáticos de una clase de plantilla?
- 28. Forma Pythonic para Inicializar Miembros de Datos Estáticos (Complejos)
- 29. ¿Compartir miembros estáticos entre instancias de plantilla? (imposible?)
- 30. ¿Los miembros estáticos de una clase genérica están vinculados a la instancia específica?
Sí me doy cuenta que no tengo que crear una instancia de la clase. Pero la instancia de clase necesita acceso a estos miembros, así como a otros módulos. Me preocupa que esté importando este módulo de varios otros módulos. ¿Eso significa que los miembros estáticos se restablecen para todos los módulos? ¿O cada módulo que lo importa tendrá su propio conjunto de miembros estáticos? – Falmarri
Tu edición respondió mi pregunta, gracias =] – Falmarri