[英]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.