Python class 属性 未更改

Python class property not changed

我的 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 脚本时,它显示空字符串 而不是 'this is client id'。请帮忙

您在 class 的一个实例上设置 属性,而不是 class 本身——不会渗透到 class 或任何事物。 class 方法 getter 然而在 class 上查找,所以它没有找到它。删除 @classmethod 即可。

因为您实际上是在更改 cls_obj.client_id,而不是 cls.client_id

请注意,您可以使用 cls_obj.client_id 访问 class 变量 client_id,但如果您将其赋值,则只需将实例变量添加到 cls_obj。现在您同时拥有 cls.client_idcls_obj.client_id,下次您尝试 cls_obj.client_id 时,您将获得实例变量。