mpmath icon indicating copy to clipboard operation
mpmath copied to clipboard

Metaclassing causes different classes for custom contexts

Open sylee957 opened this issue 5 years ago • 0 comments

import mpmath
from mpmath import MPContext

mp = mpmath.mp
mp0 = MPContext()

print(isinstance(mp.matrix([[1, 2], [3, 4]]), mp.matrix))
print(isinstance(mp.matrix([[1, 2], [3, 4]]), mp0.matrix))
print(isinstance(mp0.matrix([[1, 2], [3, 4]]), mp.matrix))
print(isinstance(mp0.matrix([[1, 2], [3, 4]]), mp0.matrix))

print(isinstance(mp.mpf(1), mp.mpf))
print(isinstance(mp.mpf(1), mp0.mpf))
print(isinstance(mp0.mpf(1), mp.mpf))
print(isinstance(mp0.mpf(1), mp0.mpf))

print(isinstance(mp.mpq(1), mp.mpq))
print(isinstance(mp.mpq(1), mp0.mpq))
print(isinstance(mp0.mpq(1), mp.mpq))
print(isinstance(mp0.mpq(1), mp0.mpq))

I see mp contexts are creating different classes on fly, but only mpq is hardcoded to a single class. How should I check if a class is generally an instance of mpf or matrix across every contexts? Were those metaclsses necessary for mpf and matrix?

sylee957 avatar Mar 24 '20 04:03 sylee957