我们如何从字符串中获取对象引用?此类字符串必须包含哪些信息



>假设我们有一个字符串,例如<dict object at 0x0000000000511948> .然后我们如何从该字符串中获取对对象的引用?如果给出的示例不包含足够的信息来获取对该对象的引用,我愿意更改字符串。

基本上,我们正在寻找两个函数obj2strstr2obj,以便以下测试返回清晰:

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

最新更新