Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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对象属性错误_Python_Class_Attributes - Fatal编程技术网

奇怪的python对象属性错误

奇怪的python对象属性错误,python,class,attributes,Python,Class,Attributes,我遇到了一个非常奇怪的问题 请参阅下面的代码。在这个类中,有一个属性“怪异”,它的定义与所有其他属性一样。(代码的问题区域标记为 ======================== ========================) 但是,当我训练在其中一个函数中访问它时,它将引发一个错误,表示该属性不存在 但是,如果在函数中删除访问该属性的行,然后创建一个对象,则可以访问该对象的属性 请你看一下代码,看看出了什么问题,我在这里束手无策……:'( class img_iter(DataIter):

我遇到了一个非常奇怪的问题

请参阅下面的代码。在这个类中,有一个属性“怪异”,它的定义与所有其他属性一样。(代码的问题区域标记为

======================== ========================) 但是,当我训练在其中一个函数中访问它时,它将引发一个错误,表示该属性不存在

但是,如果在函数中删除访问该属性的行,然后创建一个对象,则可以访问该对象的属性

请你看一下代码,看看出了什么问题,我在这里束手无策……:'(

class img_iter(DataIter):
定义初始(自我、方向列车、,
迪鲁标签,
data_name=“data”,
label\u name=“softmax\u label”,
最后一批句柄='pad',
批次大小=1,
#===================================================
#===================================================
颜色_平均值=(117、117、117),
#===================================================
#===================================================
截止尺寸=无):
super()。\uuuu init\uuuuu()
#目录作为属性
self.dir\u train=dir\u train
self.dir\u label=dir\u label
#名字
self.data\u name=数据\u name
self.label\u name=label\u name
#将数据和标签文件读入列表
self.img_data_lst=[s代表os.listdir(dir_train)中的s,如果s中的.jpg]
self.img_data_iter=iter(self.img_data_lst)
如果self.dir_标签不是None:
self.img_label_lst=[s代表os.listdir中的s(dir_label),如果s中的.gif]
#数据文件数
self.num\u data=len(self.img\u data\u lst)
#初始化时读取数据
self.data,self.label=self.\u read()
#尺寸限制器
self.cut\u off\u size=cut\u off\u size
#批量
self.batch\u size=批次大小
#数据光标
self.cursor=-批处理大小
#===================================================
#===================================================
self.weird=np.array(颜色平均值)
#===================================================
#===================================================
self.last\u batch\u handle=last\u batch\u handle
def_读取(自):
“”“获取两个列表,每个列表包含两个元素:name和nd.array
价值“”
数据={}
标签={}
数据[self.data\u name],标签[self.label\u name]=self.\u read\u img()
返回列表(data.items()),列表(label.items())
定义读取图像(自身):
#从文件名迭代器获取下一个数据文件
img_name=self.img_data_iter.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
#打开图像文件
img=Image.open(os.path.join(self.dir\u train,img\u name))
#找到相应的标签图像并在self.img_label_lst中打开[s(如果s中有img_名称)[0]
label_name=img_name.split('.')[0]+'_mask.gif'
label=Image.open(os.path.join(self.dir\u label,label\u name))
#检查图像文件大小是否匹配
断言img.size==label.size
#转换为numpy数组并操纵,生成三维数组:高度、宽度、颜色
img=np.array(img,dtype=np.float32)
#===================================================
#===================================================
#img=img-自我。怪异。重塑(1,1,3)
测试=自我测试
#===================================================
#===================================================
img=np.swapax(img,0,2)
#(c、h、w)
img=np.swapax(img,1,2)
#(1,c,h,w)
img=np。展开尺寸(img,轴=0)
#生成的二维阵列:高度、宽度
label=np.array(label)
#(h,w)
label=np.array(label)
#(1,h,w)
标签=np。展开尺寸(标签,轴=0)
退货(img,标签)
def重置(自):
self.cursor=-1
self.img_data_iter=iter(self.img_data_lst)
下一步定义(自我):
self.cursor+=1
如果(self.cursor
截图:

调用函数中的class属性。

删除对class属性的调用,创建一个对象并直接访问同一属性


在定义self.weird之前,您正试图访问它

self.data, self.label = self._read()   
# self._read() calls self. _read_img() 
# which tries to access self.weird
# => AttributeError... 

#...     

# move this line above `self.data...`,
# and all should be well! 
self.weird = np.array(color_mean)

希望这有帮助!

嗨,这不是一个双缩进,尽管它看起来是这样的。我只是为了更好的可读性将参数对齐。我误读了,apologies@Y.L我建议你把这篇文章删减到a,然后以文本形式发布,而不是图片。
self.data, self.label = self._read()   
# self._read() calls self. _read_img() 
# which tries to access self.weird
# => AttributeError... 

#...     

# move this line above `self.data...`,
# and all should be well! 
self.weird = np.array(color_mean)