>假设我们有一个字符串,例如<dict object at 0x0000000000511948>
.然后我们如何从该字符串中获取对对象的引用?如果给出的示例不包含足够的信息来获取对该对象的引用,我愿意更改字符串。
基本上,我们正在寻找两个函数obj2str
和str2obj
,以便以下测试返回清晰:
def single_test(obj):
try:
assert (str2obj(obj2str(obj)) is obj)
print('things went well')
return 0
except (BaseException, Exception) as exep:
print('test failed')
if isinstance(exep, AssertionError) and 'str2obj(obj2str(obj))' in str(exep):
return 1
return 999
似乎obj2str
的良好候选者如下:
def obj2str(obj):
# ignores overridden __repr__ if it is overridden
return object.__repr__(obj)
但是,我不知道我们可以为str2obj
做些什么
你所要求的东西是不可能的。
像<dict object at 0x0000000000511948>
这样的字符串实际上告诉你对象在内存中的地址。但是Python是非常非常高级的编程语言,所以你不能直接访问内存(RAM(,即使你有确切的地址(如在C中(,更不能修改地址。
但是如果你想使用这样的东西,你可以简单地创建一个引用你的对象而不是字符串的新变量。
your_dict = {'a':5}
new_dict = your_dict
new_dict['a'] = 17
print(your_dict['a'])
$17