我有一组看起来像这样的代码:
class DataFilter:
def __init__(self, csvData):
# converts csv string data to float lists, if possible
data = []
for line in csvData:
try:
line = line.split(',')
except:
print(line)
return
for i in range( len(line) ):
try:
line[i] = float(line[i])
except ValueError:
pass
data.append(line)
self.data = data
def find_depth_index(self, depth):
for index, line in enumerate( self.data ):
if line[1] > depth:
return index
def remove_above_depth(self, depth):
index = self.find_depth_index( depth )
return self.data[ index: ]
def remove_beyond_depth(self, depth):
index = self.find_depth_index(depth)
return self.data[ :index ]
data = DataFilter(data).remove_above_depth(SURF_CASING_DEPTH)
print('-----------------------')
data = DataFilter(data).remove_beyond_depth(VERTICAL_SEC_DEPTH)
然后它给我一个错误:
File "C:/Users/Eric Soobin Kim/PycharmProjects/untitled/RAPID_use_filtered_data.py", line 35, in remove_beyond_depth
def remove_beyond_depth(self, depth):
File "C:/Users/Eric Soobin Kim/PycharmProjects/untitled/RAPID_use_filtered_data.py", line 26, in find_depth_index
def find_depth_index(self, depth):
AttributeError: 'DataFilter' object has no attribute 'data'
我不明白的是,它在没有问题的情况下运行:
data = DataFilter(data).remove_above_depth(SURF_CASING_DEPTH)
但它不起作用,
data = DataFilter(data).remove_beyond_depth(VERTICAL_SEC_DEPTH)
我认为我的第一次过滤会以某种方式改变__ini__()
中的元素,但我不知道发生了什么。为什么会发生这种情况,我该如何解决?
答案 0 :(得分:1)
您已将数据重新分配为等于您想要的内容。
data = DataFilter(data).remove_above_depth(SURF_CASING_DEPTH)
这意味着现在您已经丢失了曾经拥有的数据的指针。我建议制作像
这样的副本new_data = DataFilter(data).remove_above_depth(SURF_CASING_DEPTH)
new_data2 = DataFilter(data).remove_beyond_depth(VERTICAL_SEC_DEPTH)
这样您仍然可以引用旧的data
变量
答案 1 :(得分:0)
对象没有属性数据,因为你没有给它属性。 通过撰写来定义属性: self.object = [] 代替: object = []