Seguimiento de instancias de clase para la recopilación de datos
Imagina que te estás acercando al final de tu programa y necesitas extraer una variable específica de varios instancias de una clase para llenar un diccionario. Esta tarea puede surgir cuando se trabaja con objetos que contienen datos esenciales que necesita agregar o analizar.
Para ilustrar el problema, considere esta estructura de clases simplificada:
class Foo():
def __init__(self):
self.x = {}
foo1 = Foo()
foo2 = Foo()
Ahora, supongamos que desea recopilar el diccionario x de cada instancia de Foo() en un nuevo diccionario, independientemente del número de instancias.
Tradicionalmente, las soluciones a menudo dependen de tener una lista predefinida de instancias. Sin embargo, en escenarios prácticos, la cantidad de instancias puede variar y es posible que no tenga acceso inmediato a su lista.
Una solución eficaz para realizar un seguimiento de las instancias de clase es utilizar una variable de clase:
class A(object):
instances = []
def __init__(self, foo):
self.foo = foo
A.instances.append(self)
Con este enfoque, cada vez que se crea una instancia de A, se agrega automáticamente a la lista de instancias. Al final de su programa, puede acceder sin esfuerzo a la lista de instancias y extraer los datos deseados para su diccionario:
foo_vars = {id(instance): instance.foo for instance in A.instances}
Al mantener una lista única de instancias, puede rastrear y acceder cómodamente a todas las instancias de la clase A. Este enfoque proporciona una forma dinámica y flexible de recopilar datos de las instancias de su clase, incluso cuando su número es desconocido o variable.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3