저는 파이썬과 GAE를 사용하고 있으며 키가 userid이고 값이 'Student'객체 인 사전을 만들려고합니다. 그러나 내 사전의 값은 학생 개체가 아니라 없음입니다.GAE와 Python : 내 사전 값이 객체 대신 None을 반환합니다.
{'60': , '59': }
누군가가 올바른 방향으로 나를 가리킬 수 있다면 정말 고맙겠습니다!
Student.py
class Student:
def __init__(self, name, s_id, rew = {}):
self.name = name.strip()
self.rewards = {"Creativity": 0, "Helping Others":0, "Participation":0, "Insight":0}
self.totalRewardPoints = 0
self.s_id = s_id
Main.py는 학생 클래스 일부 모델 클래스 구현에서 appengine 데이터 저장소의 지속성에서 상속 할 필요가 우선 들어
class PageHandler(webapp2.RequestHandler):
def write(self, *a, **kw):
self.response.out.write(*a, **kw)
def initialize(self, *a, **kw):
webapp2.RequestHandler.initialize(self, *a, **kw)
def create_students(self):
user = db.GqlQuery("SELECT * FROM User WHERE position='student'")
for u in user:
temp_id = str(u.key().id())
self.students[temp_id] = student.Student(u.name, temp_id)
class MainPage(PageHandler):
students = {}
def get(self):
user = db.GqlQuery("SELECT * FROM User WHERE position='student'")
for u in user:
temp_id = str(u.key().id())
self.students[temp_id] = student.Student(u.name, temp_id)
self.write(self.students)
app = webapp2.WSGIApplication([('/', MainPage)], debug=True)
코드를 다시 포맷하십시오. 들여 쓰기가 잘못되었습니다. –
Tim이 이미 확인한 문제 외에도 Python의 주요 문제가 두 가지 있습니다. '__init__'에서와 같이 사전 리터럴을 디폴트 함수 매개 변수로 사용하지 마십시오. 모든 호출은 _same_ 사전을 가져오고 수정하면 모든 후속 호출은 물론 수정 된 버전을 가져옵니다. 마찬가지로,'MainPage' 클래스의'students'에 대한 정의는 인스턴스 변수가 아닌 클래스 레벨 변수입니다. 대신'get()'안에 정의하십시오. –
또한, 'Student'가 모델 클래스라고 가정하면, 당신은 분명히'__init__'를 오버라이드해서는 안됩니다. 대신에 공장 방법을 사용하는 것이 어렵습니다. –