我写了一个python程序将一个csv文件转换为我自己的类列表,这里是代码
class node:
def __init__(self):
self.cst_code = 0
self.detail={};
def setdata(self,CST_CODE,DATE,NUMBER):
self.cst_code = CST_CODE
self.detail[DATE]=NUMBER
def add(self,DATE,NUMBER):
if detail.get(DATE):
self.detail[DATE]+=NUMBER
else:
self.detail[DATE]=NUMBER
def sort(self):
sorted(self.detail.items(),key = lambda e:e[0],reverse=True)
def get_code(self):
return self.cst_code
detail 是一个 dict 对象,但 python 将其视为 _csv.reader
---> 16 if detail.get(DATE):
17 self.detail[DATE]+=NUMBER
18 else:
AttributeError: '_csv.reader' object has no attribute 'get'
有没有人遇到同样的问题并得到解决方案?
您可能已经在方法 node.add()
的外部作用域中创建了一个名为 detail
的变量。由于您引用的是 detail
,并且方法的作用域中没有名为 detail
的对象,因此将检查外部作用域中是否有具有该名称的对象。您可能在方法外部定义了csv.reader
的实例。
看起来你的方法实际上应该指的是self.detail
,而不是detail
。要访问存储在实例中的字典,而不是外部作用域,请执行以下操作:
def add(self,DATE,NUMBER):
if self.detail.get(DATE): # N.B. use self
self.detail[DATE]+=NUMBER
else:
self.detail[DATE]=NUMBER
另请注意,方法 node.sort()
缺少return
。