簡體   English   中英

我們如何從字符串中獲取對象引用? 這樣的字符串必須包含哪些信息?

[英]How can we get an object reference from a string? What information must such a string contain?

假設我們有一個字符串,例如<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是非常高級的編程語言,因此,即使您具有准確的地址(如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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM