上earlier thread跟進我的問題是如何能夠藉此表達:fn(self,*args, **kwargs
並調用它在面向對象的方式這樣self.fn(...)
這裏是我的總計劃與失敗線註釋掉:裝飾的方法 - 如何調用在面向對象的方式方法,而不是程序的時尚
def formatHeader(fn):
def wrapped(*args, **kwargs):
print "here is args prior to extraction - {0}".format(args)
if len(args) > 1:
self,args = args # remove self from args
else:
self, args= args[0],()
print("Here are the arguments after extraction: {0} {1}".format(self, args))
#return '<div class="page_header">' + self.fn(*args, **kwargs)+'</div>'
return '<div class="page_header">' + fn(self,*args, **kwargs)+'</div>'
return wrapped
class MyPage(object):
def __init__(self):
self.PageName = ''
def createPage(self):
pageHeader = self.createHeader()
return pageHeader
def addem(self, a, b):
return a + b
@formatHeader #<----- decorator
def createHeader(self):
return "Page Header " + self.PageName
obj = MyPage()
print obj.createHeader()
請修復您的格式。看起來好像不是你所有的代碼都已經進入了代碼塊。 – 2012-08-01 15:37:44
......現在的情況怎麼了?裝飾者適用於功能,他們不關心類,並且在寫一個類時也不應該。 (另外,如果你保持現在的狀態,你的代碼就可以在課堂外使用) – 2012-08-01 15:41:07