Python中如何获取类实例变量的最新值而非初始值?
问题解决:获取类实例变量的最新值
核心问题分析
你的代码里犯了一个基础错误:每次调用Example()都会创建一个全新的类实例。第一个实例调用input_value()修改了自己的vr属性,但第二个Example()创建的是另一个独立实例,它的vr还是初始的空字符串,所以打印结果为空。
正确实现代码
只需要创建一个实例并复用它,就能获取到修改后的最新值:
class Example: def __init__(self): self.vr = '' # 初始值(空字符串) def input_value(self): self.vr = 'Hello' # 更新为最新值 def return_value(self): return self.vr # 返回最新值 if __name__ == '__main__': # 创建单个实例并复用 obj = Example() obj.input_value() cp = obj.return_value() print(cp) # 现在会输出 'Hello'
关于字符串不可变的补充说明
你遇到的这个问题和字符串不可变特性无关——你是直接给self.vr重新赋值新的字符串对象,这完全符合Python的使用逻辑。
如果真的遇到因字符串不可变导致的场景(比如需要在原引用上修改内容),在不影响字符串正常使用的前提下,有两种可行方案:
- 用列表替代字符串存储:列表是可变类型,修改元素不会改变引用。比如初始化
self.vr = [''],修改时用self.vr[0] = 'Hello',使用时通过''.join(self.vr)转回字符串即可。 - 保持重新赋值的方式:这是Python中处理字符串的常规操作,虽然字符串本身不可变,但变量可以随时指向新的字符串对象,完全不影响日常使用,代码简洁且易维护。
内容的提问来源于stack exchange,提问作者Sahil Jaswal
相关产品推荐
相关产品推荐

