Интересно, что такое правильный пифонический метод обратной и прямой совместимости, как проверить, скомпилирован ли объект re
.
isinstance
метод не может быть легко использован, в то время как результирующий объект утверждает, что он _sre.SRE_Pattern
object:
>>> import re
>>> rex = re.compile('')
>>> rex
<_sre.SRE_Pattern object at 0x7f63db414390>
но такого не существует:
>>> import _sre
>>> _sre.SRE_Pattern
AttributeError: 'module' object has no attribute 'SRE_Pattern'
>>> import sre
__main__:1: DeprecationWarning: The sre module is deprecated, please import re.
>>> sre.SRE_Pattern
AttributeError: 'module' object has no attribute 'SRE_Pattern'
>>> re.SRE_Pattern
AttributeError: 'module' object has no attribute 'SRE_Pattern'
Я не хочу использовать утиную печать (т.е. проверять наличие определенных методов), потому что это может столкнуться с некоторыми другими типами.
В настоящее время я использую:
>>> RegexpType = type(re.compile(''))
>>> type(rex) == RegexpType
True
но может быть лучший способ.