- 论坛徽章:
- 0
|
本帖最后由 jxing_ing 于 2013-09-04 20:45 编辑
代码1中, 你先定义了一个函数 wrapper, 然后给这个函数对象增加了一个属性 count 值为0
代码2中,你在 wrapper 定义之前尝试访问 wrapper.count, 这时候解释器还不知道 wrapper 是个什么东东, 当然报错啦
> 如果将wrapper.count = 0放在如 <代码1> 中的位置,在wrapper()函数中执行wrapper.count += 1
#的时候,是如何知道wrapper.count的初始值的呢?
------
这个是因为, def 段只是定义了函数体, 但是并不执行函数。也就是wrapper.count += 1 这时候不会被执行。 在定义了函数 wrapper 后,也就可以访问 wrapper.count 了
- >>> def f(): f.v=1
- ...
- >>> f.v # 函数没有执行 f.v 不存在
- Traceback (most recent call last):
- File "<stdin>", line 1, in ?
- AttributeError: 'function' object has no attribute 'v'
- >>> f()
- >>> f.v # 函数执行后 f.v 被赋值为1
- 1
复制代码 |
|