Python2 y Python3: __init__ y __new__

He leído otras preguntas que explican la diferencia entre __init__ y __new__ pero no entiendo por qué en el siguiente código con python 2:

 init 

y Python3:

 new init 

El código de muestra:

 class ExampleClass(): def __new__(cls): print ("new") return super().__new__(cls) def __init__(self): print ("init") example = ExampleClass() 

Para usar __new__ en Python 2.x, la clase debe ser una clase de estilo nuevo (clase derivada de un object ).

Y la llamada a super() es diferente de la de Python 3.x.

 class ExampleClass(object): # <--- def __new__(cls): print("new") return super(ExampleClass, cls).__new__(cls) # <--- def __init__(self): print("init")