해결된 질문
작성
·
280
0
답변 1
1
안녕하세요.
파이썬의 클래스 문법에서 클래스 변수와 인스턴스 변수 문법에 대해서 살펴보겠습니다.
인스턴스 내에서 self.template_name 으로 접근하였을 때,
1) 인스턴스 변수로서 template_name이 있는 지 먼저 찾습니다. 인스턴스 변수로서 그 이름의 값이 있으면 그 값을 사용하고
2) 인스턴스 변수로서 그 이름의 값이 없으면, 클래스 변수로서 template_name이 있는 지 찾습니다. 클래스 변수로서 그 이름의 값이 있으면 그 값을 사용하고
3) 없으면 AttributeError 예외를 발생시킵니다.
---
TemplateView.as_view(template_name="root.html") 코드에서
TemplateView 클래스만 봤을 때에는 클래스 변수 template_name = None 선언은 있지만, 인스턴스 변수 template_name은 없죠. 이때는 self.template_name 값은 None이 됩니다. 클래스 변수이죠.
그런데 .as_view(template_name="root.html") 지정을 통해 인스턴스 변수로서 template_name이 생성이 되었고. 이제 self.template_name 값은 "root.html" 이 됩니다. 인스턴스 변수입니다.
답변 감사합니다. 결국 인스턴스 변수를 참조하는것 자체가 인스턴스 변수 참조 후 클래스 변수까지 참조하는 것을 포함하는것이군요. 파이썬 문법 공부가 좀더 필요하겠네요 :)