変数が 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
という名前の属性が 1 つだけありmpfr
、それが上記の関数です。
ただし、mpfr
関数の出力のクラスも呼び出されmpfr
ます。
>>> f.__class__
mpfr
しかし、これはメイン名前空間mpfr
の関数ではありません:mpfr
>>> type(f) == mpfr
False
mpfr
これまでのところ、空のmpfr
インスタンスを作成し、その__class__
属性を使用して、変数が のインスタンスであるかどうかを確認することしかできませんでした。
isinstance(f, mpfr().__class__)
<class 'mpfr'>
直接アクセスするにはどうすればよいですか?