[英]How can we get an object reference from a string? What information must such a string contain?
假设我们有一个字符串,例如<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是非常高级的编程语言,因此,即使您具有准确的地址(如C语言),也无法直接访问内存(RAM),而且您无法修改地址。
但是,如果您想使用类似这样的方法,则可以简单地创建一个引用对象而不是字符串的新变量。
your_dict = {'a':5}
new_dict = your_dict
new_dict['a'] = 17
print(your_dict['a'])
$17
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.