这是一些示例 Python 代码:
import re
some_regex = re.compile(r"\s+1\s+")
result = some_regex.search(" 1 ")
dir(result)
我使用 Python 2.6.1 返回以下内容:
['__copy__', '__deepcopy__', 'end', 'expand', 'group', 'groupdict', 'groups', 'span', 'start']
然而result.re
存在(来自解释器):
>>> result.re
<_sre.SRE_Pattern object at 0x10041bc90>
dir()
使用函数时如何不列出属性?
此页面确认re
属性的存在:
http://docs.python.org/library/re.html#re.MatchObject.re
现在我明白了,如果一个人试图访问一个未通过 列出的属性dir()
,那么__getattr__
就会被调用,但我也没有看到__getattr__
列为对象的属性之一,所以我只能摸不着头脑。
更新
这里是matchobject.re
Python 2.6.1 文档中存在的证明:http:
//docs.python.org/release/2.6.1/library/re.html#re.MatchObject.re