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_id
和 cls_obj.client_id
,下次您尝试 cls_obj.client_id
时,您将获得实例变量。
我的 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_id
和 cls_obj.client_id
,下次您尝试 cls_obj.client_id
时,您将获得实例变量。