我是Python的新手,我对于数字之间的关系有点混淆.Integral和int in builtins模块。
然后我的问题是:
numbers.Integral和int之间有什么关系?它是否类似于Java中Integer和int之间的关系(Integer只是int的包装类)?
何时使用数字。整体? 由于mumbers模块中定义的类型都不能实例化,那么在什么样的场景中我们需要使用这些类型?
我知道只有一个案例可以使用积分:
# check if x is a integer
isinstance(x, Integral)
从Python语言参考:
” numbers.Number这些是由数字文字创建的,并返回为 算术运算符和结果 算术内置函数。“
但似乎算术运算符或算术内置函数不会返回数字类型。它仍然是内置类型。
>>> a,b=123,5
>>> c=a*b
>>> print(c.__class__)
<class 'int'>
>>> d=abs(a)
>>> print(d.__class__)
<class 'int'>
我正在使用Python 3.2a3。
答案 0 :(得分:3)
因为你听起来像你知道Java:numbers.Integral
定义了“接口”(它实际上是接口的泛化,称为“抽象基类”(ABC))用于整数。它不是您可以实例化的具体类型。
实现此接口的唯一内置类型是int
。
使用isinstance( obj, numbers.Integral)
,您可以测试obj
是否实现了接口:
>>> isinstance(3, numbers.Integral)
True
>>> isinstance(3.0, numbers.Integral)
False
>>> isinstance(3+0j, numbers.Integral)
False
如果你想编写一个行为类似于整数的自定义类,你将从numbers.Integral
继承 - 或者如果你想发明一种新类型的数字,你可以在那里注册。