我编写了一个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'
有没有人遇到同样的问题并获得解决方案?
答案 0 :(得分:0)
您可能在方法detail
的外部范围内创建了一个名为node.add()
的变量。因为您指的是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
。