在看类相关知识点时,突发奇想的一个问题,如何用内存地址获取到其中存储的数据呢?

获取内存地址

1
2
a = 1
id(a) # 获取内存地址

内存读取数据

1
2
3
4
5
6
7
import ctypes
set_value = 'hello world' # 定义一个字符串变量
address = id(set_value) # 获取value的地址,赋给address
get_value = ctypes.cast(address, ctypes.py_object).value # 读取地址中的变量
print(address,get_value)

2390895579248 hello world

在读取地址中的变量这条语句中get_value = ctypes.cast(address, ctypes.py_object).value,最后的value是调用的变量里的函数,我还以为是因为我的变量a是整数不是字符串类型,后来看了一下变量中的函数才反应过来。

cmd.png

类中的内存地址不是固定的,每次调用都会重新给这个类赋一个新的内存地址;

未命名图片.png

参考文章:python通过内存地址获取数据 - 有腹肌的猿 - 博客园 (cnblogs.com)