这是我的代码:如何使用@在Python ..和@property和@classmethod
def a():
print 'sss'
@a()
def b():
print 'aaa'
b()
和回溯是:
sss
Traceback (most recent call last):
File "D:\zjm_code\a.py", line 8, in <module>
@a()
TypeError: 'NoneType' object is not callable
所以如何使用“@ “
感谢
更新
class a:
@property
def b(x):
print 'sss'
aa=a()
print aa.b
它打印:
sss
None
如何使用@property
感谢
updated2
和类方法:
class a:
@classmethod
def b(x):
print 'sss'
aa=a()
print aa.b
在它打印:
<bound method classobj.b of <class __main__.a at 0x00B2DC00>>
我在这种情况下可能是错误的..但这是我认为的...装饰者不应该完全取代功能..它应该装饰它..我。说*** *** aaa ***(***在前面和后面打印使用装饰) – SysAdmin 2010-04-28 02:10:57
嗨迈克尔,看看更新 – zjm1126 2010-04-28 02:26:05
@SysAdmin,装饰可以做到这一点,通过返回一个函数,调用函数已通过;但是,实际的语义是返回的函数接管函数的名称。使用@x def f():....与def f():...相同,后跟f = x(f); – 2010-04-28 02:31:50