Python类属性未更改

时间:2015-05-28 03:39:20

标签: python class object properties

我的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'。请帮忙

2 个答案:

答案 0 :(得分:1)

您在类的实例上设置属性,而不是类本身 - 不会渗透到类或任何东西。然而,类方法getter在类中查找,因此它找不到它。删除@classmethod即可。

答案 1 :(得分:1)

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

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