以下代码打印“original value”。我想在列表中存储一个字符串的引用,以便存储在列表中的字符串和first_string始终指向同一对象。我该如何在Python中实现它?我想要存储一个引用,最好是一个弱引用,在列表中。列表应该是不同类型的对象引用的列表。我只是在测试如何在Python中做不同的事情以及可能性。这是Python可以实现的吗?
my_list = []
first_string = 'original value'
my_list.append(first_string)
first_string = 'changed'
print(my_list[0])
应该打印出 "changed"。
...
我尝试使用弱引用获取字符串:
weakref.ref(first_string)
但是显然无法对字符串对象进行弱引用。
cannot create weak reference to 'str' object
尽管存储id是一个不好的想法(因为对象可能被CG而id指向不同的对象),但我仍然尝试了它:
import ctypes
my_list = []
first_string = 'original value'
my_list.append(id(first_string))
ctypes.cast(my_list[0], ctypes.py_object).value = 'changed value'
print(first_string)
但是它仍然没有起作用。打印出的值仍然是原始值。那么这在Python中是无法实现的吗?