我正在尝试使用"setx"
中Property
的{{1}}函数来处理我从excel获得的日期信息。我有一些自己的函数可以进行我在课外测试的数据处理,它们工作得很好。但是当我将它们移到课堂中时,除非我先使用Class
实例,否则它们会突然变得不可见。当我使用self.
方法时,我收到错误:
self.My_xldate_as_tuple()
即使代码完全是我以前在课外使用过的,但是它起作用了。
在进入My_xldate_as_tuple() takes 1 positional argument but 2 were given
块之前,我正在处理类之外的日期数据并从类外部设置变量。当我有大约15种不同的操作完全基于Property Set
更改时,这变得笨拙。我展示了工作代码集和非工作代码集的缩短版本。 NumDates Property
调用发生了什么变化,它改变了函数输入的方式?
破碎的代码:
self.
工作代码:
class XLDataClass(object):
_NumDates = []
TupDates = []
def getNumDates(self): return self._NumDates
def setNumDates(self, value):
self._NumDates = value
self.TupDates = list(map(self.My_xldate_as_tuple,value)) #Error here
#This version doesn't work either, since it can't find My_xldate_as_tuple anymore
self.TupDates = list(map(My_xldate_as_tuple,value))
def delNumDates(self):del self._NumDates
NumDates = property(getNumDates,setNumDates,delNumDates,"Ordinal Dates")
#exact copy of the My_xldate_as_tuple function that works outside the class
def My_xldate_as_tuple(Date):
return xlrd.xldate_as_tuple(Date,1)
#Other code and functions here
#end XlDataClass
def GetExcelData(filename,rowNum,titleCol):
csv = np.genfromtxt(filename, delimiter= ",")
NumDates = deque(csv[rowNum,:])
if titleCol == True:
NumDates.popleft()
return NumDates
#Setup
filedir = "C:/Users/blahblahblah"
filename = filedir + "/SamplePandL.csv"
xlData = XLDataClass()
#Put csv data into xlData object
xlData.NumDates= GetExcelData(filename,0,1)
答案 0 :(得分:2)
Python中的实例方法需要在参数列表中使用显式self。在课堂内,您需要编写方法定义,如:
def My_xldate_as_tuple(self, Date):