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