Message 209064 - Python tracker
It doesn't act like a class method, though, it acts like a static method:
>>> int.__new__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: int.__new__(): not enough arguments
>>> int.__new__(int)
0
You have to *write* __new__ and tp_new as if they were class methods (because the type machinery expects you to do so), but you have to *call* them like static methods if you're invoking them directly for some reason.