为什么 要
numpy.int32从何而来
int?
int是一个特定的类。它是表示整数的一种方法。这并不意味着每个代表整数的类都应从继承
int。
numpy.int32具有不同的语义和不同的方法-
例如,它具有像0维数组一样进行操作所需的大多数功能-并且从
int实现继承不是特别有用
numpy.int32。
在Python
2的某些版本(仅Windows?)上,
numpy.int32实际上会从
int该版本降级(在这些版本上也是32位),但我相信,此设计决定可以追溯到
int执行环绕式算法之时,
numpy.int32而不是升级
long为溢出时。
,以及何时
operator.index不存在。那时,这是一个更合理的决定。
至于如何对待
numpy.int32像
int,
numbers.Integral确实一种好的工作,但实现依赖于人明确
register-ing他们班有
numbers.Integral,人们通常不会想到这样做。NumPy
register直到被引入6年后的2014年才添加通话
numbers.Integral。像SymPy这样的类似库仍然没有调用。
我发现
operator.index是更好的检查:
try: real_int = operator.index(some_intlike_thing)except TypeError: # Not intlike. do_something_about_that()
operator.index是类int类必须实现的钩子,以使其实例可用作序列索引。这是比
int(x)接受
3.5和更严格的支票
'3'。如果缺少此挂钩,则会产生具体且容易注意到的影响,因此比
numbers.Integral支持更容易出现。



