我在持久性实例的背景下阅读了有关腌制的内容,并在以下代码段中进行了搜索:
Pickle文件可以被黑客入侵。如果您通过网络收到原始的泡菜文件,请不要信任它!它中可能包含恶意代码,当您尝试删除它时,它将运行任意python。 [1]
我的理解是,酸洗将数据结构转换为字节数组,而酸洗库还包含用于获取酸洗字节数组并从中重建python类的方法。
我测试了一些代码,看是否只需将代码放入类或init方法即可运行它:
import pickle
class A:
print('class')
def __init__(self):
print('instance')
a = A()
print('pickling...')
with open('/home/usrname/Desktop/pfile', 'wb') as pfile:
pickle.dump(a, pfile, pickle.HIGHEST_PROTOCOL)
print('de-pickling...')
with open('/home/usrname/Desktop/pfile', 'rb') as pfile:
a2 = pickle.load(pfile)
但是这只会产生
class
instance
pickling...
de-pickling...
建议取消实例化时,实际上不会运行__ init__方法。所以我仍然很困惑您如何使代码在该过程中运行。