(a)我试图弄清楚int(), float(), tuple()和类似的函数是独立的函数,还是像用户类的构造函数一样工作(即在covers下调用类__init__()方法)。
(b)我想找到这些方法的可用签名,如int(str)、int(str, base)。
(c)我尝试查看github上的源代码,但它似乎是在c层实现的,而不是在Python层上实现的。甚至没有类似头的存根Python代码。
发布于 2020-05-15 20:12:57
是的,所有这些都是类,它们是类对象。他们的type是type (它本身是一个类,一个元类):
>>> type(int)
<class 'type'>与自定义类相同:
>>> class Foo: pass
...
>>> type(Foo)
<class 'type'>似乎自相矛盾的是:
>>> type(type)
<class 'type'>注意:这些对象的None是__init__。这是一个特殊的方法,由构造函数调用它来运行自定义初始化。IOW:
>>> Foo.__init__ is Foo
False发布于 2020-05-15 20:17:19
如果使用help(int),您将看到它是类的名称:
Help on class int in module builtins:
class int(object)
| int(x=0) -> integer
| int(x, base=10) -> integer但是,如果进一步向下扫描,就不会看到__init__方法。实例由类的__new__方法中的内部C代码初始化。
https://stackoverflow.com/questions/61827555
复制相似问题