繁体   English   中英

如何从python中的另一个类访问变量?

[英]How can I access a variable from another class in python?

我需要从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']

首先,在类__init__函数中两次定义属性。 不会产生属性行为, 必须在类级别定义它们才能将其用作属性(而不仅仅是普通属性)。

对于您的主要问题,答案很简单,就是您的HighScore实例需要对LoginScreen实例的引用-如果引用了该变量,例如在变量lgs ,则可以直接访问lgs.user_objectid以获取所需的值。

最好的方法完全取决于程序的结构,以及在何处创建和使用这些类及其方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM