【问题标题】:Python class property not changed [duplicate]Python类属性未更改[重复]
【发布时间】:2015-08-10 09:15:18
【问题描述】:

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

【问题讨论】:

    标签: python class object properties


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-27
        • 1970-01-01
        • 2015-08-24
        • 1970-01-01
        • 1970-01-01
        • 2013-10-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多