我的python脚本中有这段代码
class Class(object):
client_id = ''
@classmethod
def get_client_id(cls):
return cls.client_id
class Service(object):
@staticmethod
def get_class():
cls_obj = Class()
cls_obj.client_id = 'this is client id'
return cls_obj
print(Service.get_class().get_client_id())
但是当我运行python脚本时,它显示空字符串 而不是'这是客户ID'。请帮忙
答案 0 :(得分:1)
您在类的实例上设置属性,而不是类本身 - 不会渗透到类或任何东西。然而,类方法getter在类中查找,因此它找不到它。删除@classmethod
即可。
答案 1 :(得分:1)
因为您实际上是在更改cls_obj.client_id
,而不是cls.client_id
。
请注意,您可以使用client_id
访问类变量cls_obj.client_id
,但如果分配给它,则只需将实例变量添加到cls_obj
。现在您同时拥有cls.client_id
和cls_obj.client_id
,下次尝试cls_obj.client_id
时,您将获得实例变量。