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

时间:2016-10-02 15:34:05

标签: python python-2.7

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

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

$h

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

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

1 个答案:

答案 0 :(得分:0)

如果你使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'
>>>