La asignación de Python a self en el constructor no hace que el objeto sea el mismo

Estoy haciendo un constructor en Python. Cuando se llama con un objeto existente como entrada, debe establecer el objeto "nuevo" en ese mismo objeto. Aquí hay una demostración de 10 líneas:

class A:
    def __init__(self, value):
        if isinstance(value, A):
            self = value
        else:
            self.attribute = value
a = A(1)
b = A(a)#a and b should be references to the same object
print("b is a", b is a)#this should be true: the identities should be the same
print("b == a", b == a)#this should be true: the values should be the same

Quiero el objetoA(a) construido a partir del objeto existentea sera. ¿Por qué no es así? Para ser claro, quieroA(a) para hacer referencia al mismo objeto quea, NO una copia.

Respuestas a la pregunta(1)

Su respuesta a la pregunta