我想知道如何检查变量是否为 mpfr 类型,这听起来可能微不足道,但简单却isinstance(v, mpfr)
无法做到这一点。
示例:创建一个变量是 mpfr 的实例,如何验证该变量是 mpfr 的实例?
import gmpy2
from gmpy2 import mpfr
f = mpfr('0.5')
最直观的方式失败了:
>>> isinstance(TAU, mpfr)
TypeError: isinstance() arg 2 must be a type or tuple of types
因为mpfr
是一个函数:
>>> mpfr
<function gmpy2.mpfr>
gmpy2
只有一个名为 的属性mpfr
,就是上面的函数。
然而,mpfr
函数输出的类也被称为mpfr
:
>>> f.__class__
mpfr
但这mpfr
不是mpfr
主命名空间中的函数:
>>> type(f) == mpfr
False
到目前为止,我只mpfr
通过创建一个空mpfr
实例并使用它的__class__
属性来检查变量是否是一个实例:
isinstance(f, mpfr().__class__)
如何<class 'mpfr'>
直接访问?