그래서 파이썬과 GAE의 상속 문제와 관련이 있다고 생각하는 버그로 약 2 시간을 낭비했습니다.파이썬 상속은 어떻게 GAE와 작동합니까?
내가 2 개 클래스, BlogHandler
, 그리고 아이, LoginHandler
있습니다
class BlogHandler(webapp2.RequestHandler):
def __init__(self, request=None, response=None):
super(BlogHandler, self).__init__(request, response)
self.is_logged_in = False
def initialize(self, *args, **kwargs):
webapp2.RequestHandler.initialize(self, *args, **kwargs)
logging.warning('Checking for cookie')
if True:
self.is_logged_in = True
logging.warning('We are logged in!')
else:
logging.warning('We seem to be logged out')
class LoginHandler(BlogHandler):
def get(self):
logging.warning('Choose wisely!: + %s', self.is_logged_in)
if self.is_logged_in:
self.redirect(MAIN_URL)
else:
self.render("login.html")
나는 클라이언트에서 GET 요청을받을 때마다의 initialize(self, *args, **kwargs)
방법은 아버지에 작동 한 후 get(self):
방법은 것입니다 아이를 돌보라.
이제 아버지가 변수, 자식 변수 is_logged_in
을 공유하고 싶습니다. 나는 내가 항상 True
인 상태를 확인하려면 initialize(self, *args, **kwargs)
를 실행할 때 변화의 100 %의 확률로 그래서 내가, 그리고
False
으로 아버지의 생성자를 초기화 varible에 디폴트 값을 제공해야 의 변수는 True
입니다.
자식에게, 나는 변수의 값을 확인하고 ... 은 항상 거짓이다. 나는 특별히이 변수의 값을 변경한다는 것을 알고 있기 때문에이 버그를 이해할 수 없다. 다음은 로그입니다.
WARNING 2014-05-09 22:50:52,062 blog.py:47] Checking for cookie
WARNING 2014-05-09 22:50:52,062 blog.py:51] We are logged in!
WARNING 2014-05-09 22:50:52,063 blog.py:116] Choose wisely!: + False
INFO 2014-05-09 22:50:52,071 module.py:639] default: "GET /blog/login HTTP/1.1" 200 795
왜 이런 일이 발생합니까? 나는 무엇을 이해하지 못합니까?
기다림 ... 무엇? 그것은 작동 ... 어떻게?! 어떤 종류의 마법이야? 왜 지금이 작품이 작동하는지 링크 또는 설명을 주시겠습니까? –
@Flame_Phoenix, 나는 내 대답을 편집하려고했으나 Tim Hoffman이 나를 괴롭혔다. 죄송합니다. 귀하의 질문에 대답 할 때 약간의 깊이가 부족한 상태였습니다. –