我可以将属性分配给自身内部的函数吗?

时间:2014-04-22 03:33:49

标签: python

今天我发现我可以为属性分配属性,但当我尝试在自身内部分配属性时,我失败了:

>>> def a():
...     pass
...
>>> a.x = 1
>>> a.x
1
>>> def b():
...     b.x = 2
...
>>> b.x
AttributeError: 'function' object has no attribute 'x'

有没有办法为自己内部的函数分配属性?

如果还没有,那么功能属性的使用是什么?

2 个答案:

答案 0 :(得分:1)

在实际调用函数之前,不会计算函数体;在b.x被调用至少一次之前,您的示例中的b不存在。

一种用途是模拟C风格的静态变量,其值在函数调用之间持续存在。一个简单的例子计算了函数被调用的次数。

def f():
    f.count += 1
    print "Call number {0}".format(count)
f.count = 0

请注意,从f.count内部分配count没有问题,但初始分配必须在f定义后进行,因为f在此之前不存在

答案 1 :(得分:1)

结帐pep-0232。这个问题here