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 对象。他们的type
是type
(它本身就是一个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 代码初始化
(a) 我试图弄清楚 int(), float(), tuple()
和类似函数是独立函数还是它们像用户 classes 的构造函数一样工作(即调用 class __init__()
隐藏的方法。)
(b) 我想找到这些方法的可用签名,例如 int(str)
、int(str, base)
.
(c) 我试着查看 github 上的源代码,但它似乎是在 c-layer 上实现的,而不是在 Python-layer 上实现的。甚至没有 header-like 存根 Python 代码。
是的,所有这些都是 classes,它们是 class 对象。他们的type
是type
(它本身就是一个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 代码初始化