我需要从LoginScreen类访问user_objectid并使用它来使用HighScore类中的Parse SDK访问该用户对游戏的高分。但是,我不确定如何访问此信息。以下是我的代码:
class LoginScreen(Screen):
def __init__(self, **kwargs):
super(LoginScreen, self).__init__(**kwargs)
self.gametime = BooleanProperty(False)
_username = ObjectProperty(None)
_password = ObjectProperty(None)
user_objectid = ObjectProperty(None)
def loginUser(self):
if self._username.text != '' and self._password.text != '':
try:
connection = httplib.HTTPSConnection('api.parse.com', 443)
params = urllib.urlencode({"username":self._username.text, "password":self._password.text})
connection.connect()
connection.request('GET', '/1/login?%s' % params, '', {
"X-Parse-Application-Id": "${APPLICATION_ID}",
"X-Parse-REST-API-Key": "${REST_API_KEY}",
"Content-Type": "application/json"
})
result = json.loads(connection.getresponse().read())
# Confirm valid user
if result['objectId'] != '':
self.user_objectid = result['objectId']
return True
这是HighScore类的代码:
class HighScore(Screen):
def __init__(self, **kwargs):
super(HighScore, self).__init__(**kwargs)
# Need user_objectid from LoginScreen class here!
user_id = ObjectProperty()
connection = httplib.HTTPSConnection('api.parse.com', 443)
connection.connect()
connection.request('GET', '/1/classes/GameScore/user_id', '', {
"X-Parse-Application-Id": "${APPLICATION_ID}",
"X-Parse-REST-API-Key": "${REST_API_KEY}"
})
result = json.loads(connection.getresponse().read())
print result['score']
答案 0 :(得分:2)
首先,您在类__init__
函数中定义两次属性。这将不给出属性行为,必须在类级别定义,以使它们作为属性(而不仅仅是普通属性)。
对于您的主要问题,答案很简单,您的HighScore实例需要引用您的LoginScreen实例 - 如果有,请参见变量lgs
,您只需访问lgs.user_objectid
即可获得你想要的价值。
执行此操作的最佳方式完全取决于程序的结构,以及创建和使用这些类及其方法的位置。