Objetos inmutables en Python: más allá de las soluciones básicas
Si bien la clase tupla estándar proporciona inmutabilidad, este artículo explora técnicas más avanzadas para crear objetos inmutables en Python puro o con extensiones de C.
Anulación de __setattr__: un enfoque limitado
Una solución común es anular el método setattr. Sin embargo, esto evita la configuración de atributos incluso en la función init. Por lo tanto, puede que no sea adecuado para todos los escenarios.
Subclasificación de tuplas: una solución parcial
Otro enfoque es subclasificar tuplas, proporcionando una nueva[ personalizada &&&] método y propiedades para acceder a los atributos. Sin embargo, este método no impide completamente el acceso a los atributos a través de self[0] y self[1], lo que puede resultar inconveniente.
La solución de tupla nombrada: simplicidad y compatibilidad
Una solución más simple y robusta es usar la clase nombradatuple del módulo de colecciones de Python:Immutable = collections.namedtuple("Immutable", ["a", "b"])
Similar a la técnica anterior, esto crea un tipo derivado de tupla y usa __slots__. Ofrece varias ventajas:Conclusión
La clase nombradatuple proporciona una manera conveniente y eficiente de crear objetos inmutables en Python. Es una alternativa viable a muchas técnicas avanzadas y ofrece beneficios adicionales como compatibilidad de serialización.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