71 Stimmen

Wie dekoriert man eine Methode innerhalb einer Klasse?

Ich versuche, eine Methode innerhalb einer Klasse zu dekorieren, aber Python gibt einen Fehler aus. Meine Klasse sieht wie folgt aus:

from pageutils import formatHeader

class myPage(object):
   def __init__(self):
      self.PageName = ''

   def createPage(self):
      pageHeader = self.createHeader()

   @formatHeader   #<----- decorator
   def createHeader(self):
       return "Page Header ",self.PageName

if __name__=="__main__":
   page = myPage()
   page.PageName = 'My Page'
   page.createPage()

pageutils.py :

def formatHeader(fn):
   def wrapped():
       return '<div class="page_header">'+fn()+'</div>'
   return wrapped

Python gibt den folgenden Fehler aus

self.createHeader()
TypeError: wrapped() takes no arguments (1 given)

Wo habe ich gepatzt?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X