【发布时间】:2021-09-20 06:00:45
【问题描述】:
我想知道如何检查变量是否为 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 实例并使用它的__class__ 属性来检查变量是否是mpfr 的实例:
isinstance(f, mpfr().__class__)
如何直接访问<class 'mpfr'>?
【问题讨论】:
-
if f.__class__ == 'mpfr' : ...呢? -
@Kristian
f.__class__ == 'mpfr'是False,属性不是str...
标签: python python-3.x isinstance gmpy