int() 是一个独立的函数还是实际上是 int class 的 _init_ 构造方法?

Is int() a standalone function or it is actually an _init_ constructor method of the int class under covers?

(a) 我试图弄清楚 int(), float(), tuple() 和类似函数是独立函数还是它们像用户 classes 的构造函数一样工作(即调用 class __init__() 隐藏的方法。)

(b) 我想找到这些方法的可用签名,例如 int(str)int(str, base).

(c) 我试着查看 github 上的源代码,但它似乎是在 c-layer 上实现的,而不是在 Python-layer 上实现的。甚至没有 header-like 存根 Python 代码。

是的,所有这些都是 classes,它们是 class 对象。他们的typetype(它本身就是一个class,一个元class):

>>> type(int)
<class 'type'>

与自定义相同class:

>>> class Foo: pass
...
>>> type(Foo)
<class 'type'>

而且看似自相矛盾:

>>> type(type)
<class 'type'>

注意:None 个对象是 __init__。这是一个特殊的方法 ,它被构造函数调用 以 运行 自定义初始化。 IOW:

>>> Foo.__init__ is Foo
False

如果您使用 help(int),您会看到它是 class:

的名称
Help on class int in module builtins:

class int(object)
 |  int(x=0) -> integer
 |  int(x, base=10) -> integer

但是,如果您进一步向下扫描,您将看不到 __init__ 方法。实例由 class.

__new__ 方法中的内部 C 代码初始化