【发布时间】:2014-04-13 22:48:48
【问题描述】:
我对 Python 很陌生,我不明白函数本身是如何具有属性的。在下面的代码中,有一个名为 f 的函数,随后在代码中,引用了名为 f.count 的东西。一个函数,即 f,怎么会有一个 .count?我收到一条错误消息:“NoneType”对象在该行上没有属性“count”,因此它显然还没有该属性。我如何赋予它该属性?
def fcount(n):
print n.__name__
@fcount
def f(n):
return n+2
for n in range(5):
print n
#print f(n)
print 'f count =',f.count #THE LINE CAUSING THE ERROR MENTIONED ABOVE
@fcount
def g(n):
return n*n
print 'g count =',g.count
print g(3)
print 'g count =',g.count
编辑:添加了 fcount(),它并没有做太多的事情,以及有关错误的详细信息。
【问题讨论】:
-
“在那一行”在哪一行?
-
在“那一行”之前,
fcount是什么? -
'NoneType' object has no attribute 'count'表示f或g是None,而不是属性。 Python 函数是对象;它们可以像许多其他对象类型一样具有属性。 -
添加了一些细节来回答这些问题。
-
这只是一种迂回的提问方式,“我如何构造一个装饰器来计算函数被调用的次数,以及如何访问该数字?”?
标签: python function attributes decorator