【问题标题】:Python : using isinstance on C based type MatchObjectPython:在基于 C 的类型 MatchObject 上使用 isinstance
【发布时间】:2013-04-22 08:50:35
【问题描述】:

我正在研究一个函数,我想知道一个对象是否是re.MatchObject 的一个实例。我尝试使用isinstance,但re.MatchObject 是C 类型,这不起作用。

我仍然可以进行类似hasattr( ... , 'pos') 或任何其他re.MatchObject 属性的替代测试,但我不认为这是一个好的解决方案。 还有什么办法吗?

【问题讨论】:

  • MatchObject。真正的类型名称是_sre.SRE_Match
  • 文档谈论 re.MatchObjectre 中没有 MatchObject 名称看起来像一个文档错误。

标签: python regex isinstance


【解决方案1】:

您需要使用正确的类型;匹配对象类型不是显式可导入的,但您可以在现有实例上使用 type() 来存储它:

import re

MatchObject = type(re.search('', ''))

然后在isinstance() 测试中使用它:

>>> MatchObject = type(re.search('', ''))
>>> isinstance(re.search('', ''), MatchObject)
True

C 定义的 Python 类型不会阻止使用 isinstance()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-27
    • 2022-01-14
    • 2013-06-10
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    相关资源
    最近更新 更多