본문 바로가기
파이썬

파이썬 클래스 내부에 메서드를 장식하는 방법은 무엇입니까?

by º기록 2021. 2. 1.
반응형

클래스 내부에 메서드를 장식하려고하는데 파이썬에서 오류가 발생합니다. 내 수업은 다음과 같습니다.

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에서 다음 오류가 발생합니다.

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

나는 어디에서 노는거야?

 

해결 방법

 

Python은 자동으로 클래스 인스턴스를 참조로 전달합니다. (모든 클래스 메서드에서 볼 수있는 self 인수).

다음과 같이 할 수 있습니다.

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

 

참조 페이지 https://stackoverflow.com/questions/1367514

 

 

반응형

댓글