言語仕様。 Pythonは特殊な扱いを受けるものの名前は全部アンダースコアで始まる。

__new__ は @classmethod と書かなくてもクラスメソッドになったり、
各種演算子オーバーロード用の名前が全部 __xx__ だったり、
__ で始まると継承したときに名前がぶつからないように修正されたり、
_ で始まると from module import * で import されないとか。