标签: python
今天我发现我可以为属性分配属性,但当我尝试在自身内部分配属性时,我失败了:
>>> def a(): ... pass ... >>> a.x = 1 >>> a.x 1 >>> def b(): ... b.x = 2 ... >>> b.x AttributeError: 'function' object has no attribute 'x'
有没有办法为自己内部的函数分配属性?
如果还没有,那么功能属性的使用是什么?
答案 0 :(得分:1)
在实际调用函数之前,不会计算函数体;在b.x被调用至少一次之前,您的示例中的b不存在。
b.x
b
一种用途是模拟C风格的静态变量,其值在函数调用之间持续存在。一个简单的例子计算了函数被调用的次数。
def f(): f.count += 1 print "Call number {0}".format(count) f.count = 0
请注意,从f.count内部分配count没有问题,但初始分配必须在f定义后进行,因为f在此之前不存在
f.count
count
f
答案 1 :(得分:1)
结帐pep-0232。这个问题here