O que pode `__init__` fazer que` __new__` não pode?

Em Python,__new__ é usado para inicializar tipos imutáveis e__init__ normalmente inicializa tipos mutáveis. E se__init__ foram removidos do idioma, o que não podia mais ser feito (facilmente)?

Por exemplo,

class A:

    def __init__(self, *, x, **kwargs):
        super().__init__(**kwargs)
        self.x = x


class B(A):

    def __init__(self, y=2, **kwargs):
        super().__init__(**kwargs)
        self.y = y

Pode ser reescrito usando__new__ como isso:

class A_N:

    def __new__(cls, *, x, **kwargs):
        obj = super().__new__(cls, **kwargs)
        obj.x = x
        return obj


class B_N(A_N):

    def __new__(cls, y=2, **kwargs):
        obj = super().__new__(cls, **kwargs)
        obj.y = y
        return obj

Esclarecimento sobre o escopo da pergunta: Esta não é uma pergunta sobre como__init__ e__new__ são usados ou qual é a diferença entre eles. Esta é uma pergunta sobre o que aconteceria se__init__ foram removidos do idioma. Alguma coisa quebraria? Alguma coisa se tornaria muito mais difícil ou impossível de fazer?

questionAnswers(3)

yourAnswerToTheQuestion