我的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”。请帮帮忙
发布于 2015-05-28 03:42:26
因为您实际上是在更改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时,您将得到实例变量。
发布于 2015-05-28 03:42:02
您是在类的实例上设置属性,而不是类本身--这不会渗透到类或任何东西上。然而,类方法getter会查看类,因此它不会找到它。删除@classmethod,它就能工作了。
https://stackoverflow.com/questions/30496806
复制相似问题