Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x “Python对象中的类属性”;“删除”;他们自己_Python 3.x_Oop_Printing_Attributes - Fatal编程技术网

Python 3.x “Python对象中的类属性”;“删除”;他们自己

Python 3.x “Python对象中的类属性”;“删除”;他们自己,python-3.x,oop,printing,attributes,Python 3.x,Oop,Printing,Attributes,我正在使用一些来自远古()的差分功耗分析(DPA)竞赛的老Python2代码。我正在修改的代码可以在这里找到() 让我抓狂的当前问题: 本质上,这段代码中的一些python对象将自己“擦除”或转到默认值,我不知道为什么。我在逻辑流中找不到任何这样做的代码,我不认为这是一个范围问题 我尝试过重写部分代码以使用numpy而不是映射lambda函数。我还尝试了无数不同的代码顺序,从类中提取方法,并尝试在本地/内联运行它们 main.py: loc\u subkeys=brk.get\u subkeys

我正在使用一些来自远古()的差分功耗分析(DPA)竞赛的老Python2代码。我正在修改的代码可以在这里找到()

让我抓狂的当前问题: 本质上,这段代码中的一些python对象将自己“擦除”或转到默认值,我不知道为什么。我在逻辑流中找不到任何这样做的代码,我不认为这是一个范围问题

我尝试过重写部分代码以使用numpy而不是映射lambda函数。我还尝试了无数不同的代码顺序,从类中提取方法,并尝试在本地/内联运行它们

main.py:

loc\u subkeys=brk.get\u subkeys()
des_breaker.py

def get_子键(self):
"""
返回当前最佳sboxes子键的向量。
这是一个由8个整数组成的数组。
"""
sk=np.array([])
对于范围(8)中的i:
sk=np.append(sk,self.\sbox\u断路器[i].get\u key())
返回sk
sbox_breaker.py

def get_键(self):
“提供当前最佳密钥”
如果self.\u最佳\u键为无:
marks=np.array([])
打印(“p0:,len(列表(自关键估算器[0]。\U关键估算器\U p0)))
打印(“p1:,len(列表(自关键估算器[0]。\U关键估算器\U p1)))
打印(“p0:,len(列表(自关键估算器[0]。\U关键估算器\U p0)))
打印(“p1:,len(列表(自关键估算器[0]。\U关键估算器\U p1)))
对于范围(64)内的i:
ke=自关键估计量[i]
marks=np.append(marks,ke.get\u mark())
self.\uuuu best\u key=np.argmax(标记)
返回自我。\u最佳\u键
key_estimator.py-属性

类密钥估计器:
"""
提供与概率f相关的键标记方法
密钥的正确性。
"""
__sbox=无
__键=无
__cnt0=0#分区0中累积的记录道计数
__cnt1=0#分区1中累积的记录道计数
__p0=无#位=0估计分区
__p1=无#位=1估计分区
__diff=np.数组([])#差分跟踪
在sbox_中打印报表是我的。他们的输出是我目前唯一的线索:

p0:5003(良好)

p1:5003(良好)

p0:0(??)

p1:0

有什么好处?第二次,key_estimator类的属性似乎被抹去了。这会发生在所有属性上,而不仅仅是p0和p1


通过这个程序的第一个循环是有效的,但是在第二次迭代(从main开始)中,它失败了,因为属性本身已经擦除了。我可以通过打印对象的属性来手动“擦除”它们。

因此,我似乎已经解决了睡眠后的问题。类属性是由map创建的,map返回Python2中的列表,而不是Python3中的列表。使用list()将它们放入列表可以解决持久性问题。我无法告诉您为什么打印地图属性会导致它自行清除。

您能否提供htaccess登录名,以链接到您提供的代码。很抱歉,它位于网页上。用户:来宾,通行证:来宾。我想我也解决了我的问题。问题是Python2映射->Python3映射。属性是看起来不持久的映射,所以将它们放入列表已经解决了这个问题