Python:'int'是一个类型还是一个函数?

use*_*784 3 python

我在Python 3.4中做到了这一点:

>>> type(int)
<class 'type'>
>>> int(0)
0
Run Code Online (Sandbox Code Playgroud)

现在我想知道int究竟是什么.它是一种类型,还是一种功能?两者都是吗?如果两者兼而有之,那么所有类型都可以被称为函数吗?

Bha*_*rel 8

int是一个班级.通常是类的类型type.

是的,几乎所有类都可以像函数一样调用.您可以创建所谓的实例,该实例是一个与您在类中定义的行为相同的对象.它们可以有自己的功能并具有特殊属性.

(type如果你感兴趣,它也是一个类,但它是一个特殊的类.它有点复杂,但如果你要搜索元类,你可以阅读更多内容)


Ant*_*ala 5

int是一个内置类/类型:

>>> isinstance(int, type)
True
Run Code Online (Sandbox Code Playgroud)

当您调用 时int('123'),Python 发现它int本身不是一个函数,但随后尝试调用int.__call__('123'); 这本身决定了 type.__dict__['__call__'];这是作为参数调用的(int, '123')。的默认__call__实现type尝试构造一个作为第一个参数给出的类型的新对象(这里int,通过调用__new__该类型类上的方法;因此 的行为int('123')间接来自int.__new__(int, '123'),它构造一个int具有给定值的新实例字符串被解析为整数。


Cha*_*tin 0

两者都是。在 Python 中,类型具有同名的关联函数,如果可以的话,这些函数会将它们的参数强制转换为指定类型的对象。因此,类型具有随之而来的int <type 'int'>功能。int

  • 我找不到对此的确认。我可以请您用一些证据和/或参考文献来扩展您的答案吗? (11认同)
  • 我认为两者都不是。它是可调用的,并在类对象上调用“__new__”和“__init__”(如果存在)。 (6认同)
  • 我强烈不同意。阅读此内容:http://www.laurentluce.com/posts/python-integer-objects-implementation/ (2认同)