Обнаружение объекта re (regexp) в Python

Интересно, какой правильный питонический метод обратной и прямой совместимости, как проверить, скомпилирован ли объект re объект.

] isinstance метод не может быть легко использован, в то время как результирующий объект утверждает, что это _sre.SRE_Pattern объект:

>>> 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

, но может быть способ получше ..

20
задан mykhal 3 June 2011 в 10:55
поделиться