How would one write object._new__(SomeType) in the C API ? ... and what lies behind the following behaviour: >>> object.__new__(T) Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: object.__new__(T) is not safe, use T.__new__() where T refers to almost any fundamental Python type ?