我正在使用Python和GAE,我試圖創建一個字典,其中的鍵是userid和值是'Student'對象。但是,我的字典的值是None而不是學生對象。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(我只包括了相關的代碼)
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__'。很難正確使用工廠方法。 –