我试图在类中声明一个静态变量。我试图在函数内添加代码的返回值。
返回值分配给类中的静态变量,但是当我尝试创建类的对象并从另一个类访问静态变量值时,它仍然返回旧值。
$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
答案 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'
>>>