반응형
클래스 내부에 메서드를 장식하려고하는데 파이썬에서 오류가 발생합니다. 내 수업은 다음과 같습니다.
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
반응형
'파이썬' 카테고리의 다른 글
파이썬 시리즈 목록을 Pandas DataFrame에 어떻게 전달합니까? (0) | 2021.02.01 |
---|---|
파이썬 문자열을 길이별로 문자열로 분할 하시겠습니까? (0) | 2021.02.01 |
파이썬 문자열을 dict로 변환 하시겠습니까? (0) | 2021.02.01 |
파이썬 Is a Python list guaranteed to have its elements stay in the order they are inserted in? (0) | 2021.02.01 |
파이썬 python-dev 설치 오류 : ImportError : apt_pkg라는 모듈이 없습니다. (0) | 2021.02.01 |
댓글