Middle
¿Qué hace el método new en el contexto del lenguaje Python?
sobes.tech AI
Respuesta de la IA
__new__ - es un método de clase que se encarga de crear una nueva instancia de la clase. Se llama antes de __init__ y determina qué objeto será devuelto. Se usa principalmente para crear objetos únicos (Singleton) o objetos de tipo inmutable (como tuple o str).
class Singleton:
_instance = None
def __new__(cls):
# Verifica si ya existe una instancia
if cls._instance is None:
# Si no, la crea delegando la creación a la clase padre (object)
cls._instance = super().__new__(cls)
# Devuelve la instancia existente o la recién creada
return cls._instance
# Ejemplos de uso
s1 = Singleton()
s2 = Singleton()
# Resultado esperado: True
print(s1 is s2)
Comparación entre __new__ y __init__:
-
__new__:- Método estático (el primer argumento es
cls). - Se llama antes de crear la instancia.
- Devuelve la instancia creada.
- Método estático (el primer argumento es
-
__init__:- Método de instancia (el primer argumento es
self). - Se llama después de crear la instancia.
- No devuelve valores (retorna implícitamente None).
- Se usa para inicializar los atributos del objeto creado.
- Método de instancia (el primer argumento es