# 1. __new__でインスタンスをreturnしない場合 # ref. https://docs.python.org/2/reference/datamodel.html#object.__new__ class A(object): def __new__(cls): print('new') # return super().__new__(cls) def __init__(self): print('init') super().__init__() >>> A() new # __new__は呼ばれ、__init__は呼ばれない # 2. サブクラスで親クラスの__init__を明示的に呼び出さない場合 class B(A): pass ... >>> B() new # クラスAの__new__は呼ばれ、__init__は呼ばれない 特に2のケースは、クラスが継承して使