Python 如何将普通函数转换为类中的函数?
我试图通过实现类和在类实例化上执行方法来组织我已经拥有的代码。我花了几个小时研究如何使用类,但仍然没有弄清楚。有人能帮我吗 这是原始代码:Python 如何将普通函数转换为类中的函数?,python,class,oop,Python,Class,Oop,我试图通过实现类和在类实例化上执行方法来组织我已经拥有的代码。我花了几个小时研究如何使用类,但仍然没有弄清楚。有人能帮我吗 这是原始代码: def readSignalAcquisitionData(fileName): f = open(fileName, 'r') # dummy read f.readline() timeStamps = [] dataInput = [] for ln in f: # parse i
def readSignalAcquisitionData(fileName):
f = open(fileName, 'r')
# dummy read
f.readline()
timeStamps = []
dataInput = []
for ln in f:
# parse info
timeStr, dataStr = ln.split(',')
timeStamps.append(float(timeStr))
dataInput.append(float(dataStr))
f.close()
return timeStamps, dataInput
这就是我目前拥有的:
class SignalDataIOUnit:
def __init__(self, fileName):
self.fileName = fileName
def readSignalAcquisitionData(self):
f = open(self.fileName, 'r')
self.timeStamps = []
self.dataInput = []
for ln in f:
# parse info
self.timeStr, self.dataStr = ln.split(',')
self.timeStamps.append(float(self.timeStr))
self.dataInput.append(float(self.dataStr))
f.close()
return self.timeStamps, self.dataInput
def writeFilteredData(self, fileName, timeStamps, dataOut):
pass
fileName="LabsWeek03_inputData.csv"
timeStamps, dataInput = SignalDataIOUnit.readSignalAcquisitionData(fileName)
print(timeStamps)
当我尝试通过终端运行时,会收到以下错误消息:
Traceback (most recent call last):
File "SignalDataEvaluationUnit_OOP.py", line 26, in <module>
timeStamps, dataInput = SignalDataIOUnit.readSignalAcquisitionData(fileName)
File "SignalDataEvaluationUnit_OOP.py", line 7, in readSignalAcquisitionData
f = open(self.fileName, 'r')
AttributeError: 'str' object has no attribute 'fileName'
回溯(最近一次呼叫最后一次):
文件“SignalDataEvaluationUnit_OOP.py”,第26行,在
时间戳,dataInput=SignalDataIOUnit.readSignalAcquisitionData(文件名)
readSignalAcquisitionData中第7行的文件“SignalDataEvaluationUnit_OOP.py”
f=打开(self.fileName,“r”)
AttributeError:“str”对象没有属性“fileName”
是的,您应该这样使用
fileName="LabsWeek03_inputData.csv"
timeStamps, dataInput = SignalDataIOUnit(fileName).readSignalAcquisitionData()
print(timeStamps)
As@deceze♦ 在注释中说,您没有实例化类
SignalDataIOUnit
,这就是它不起作用的原因
要使其工作,您有两个选择:
SignalDataIOUnit
对象并调用方法readSignalAcquisitionData
:timeStamps, dataInput = SignalDataIOUnit.readSignalAcquisitionData(fileName)
您没有实例化该类
SignalDataIOUnit(文件名)。readSignalAcquisitionData()
…非常感谢!那真是太好了stupid@deceze这看起来是对这个问题的一个非常好的回答,thijs可以将其掩盖为被接受。
class SignalDataIOUnit:
def __init__(self, fileName):
self.fileName = fileName
@staticmethod
def readSignalAcquisitionData(fileName):
...
timeStamps, dataInput = SignalDataIOUnit.readSignalAcquisitionData(fileName)