如何用返回值method重新分配Python类的静态变量值



我试图在类内部声明一个静态变量。我试图添加一个函数内的代码的返回值。

返回值被分配给类内部的静态变量,但是当我尝试创建类的对象并从另一个类访问静态变量值时,它仍然返回旧值。

class Login(Base):
      token = ''
      def run(self):
           token=keystone.get_raw_token_from_identity_service('http://localhost:35357/v3,
username=username,                                             user_domain_name='default,                                         password=passwrd,                                                                      project_name=project,                                                     project_domain_name='default')
      def auth_token(self,token):
          self.token = token
          return self.token

在另一个类中,我试图调用静态变量,但它总是打印在第一个类中声明的初始值,即token = "

      credentials = Login(Base)
      print(type(credentials.auth_token.__func__))
      print(hasattr(credentials,'token'))
      print(credentials.token)""" 

如果您将auth_token设置为@classmethod,它将按照您希望的方式运行

  @classmethod 
  def auth_token(cls, token):
      cls.token = token
      return cls.token

我不确定我是否喜欢这个设计,但那是你的事。

编辑:以下是该代码的示例,用于响应注释:

>>> class Login(object):
...   token = ""
...   @classmethod 
...   def auth_token(cls, token):
...       cls.token = token
...       return cls.token
... 
>>> l = Login()
>>> l2 = Login()
>>> l.token
''
>>> l2.token
''
>>> l.auth_token("foo")
'foo'
>>> l2.token
'foo'
>>> 

最新更新