我需要一些Python的类帮助。 我需要存储来自不同文件的数据。
这个想法(这部分代码可以工作) - 我用它来存储每个文件所需的所有信息。
class Element():
def __init__(self, filename):
self.filename = filename
self.function, self.name = readFile(self.filename)
self.vector = make_vector(table_COG_general, self.function)
现在我觉得一个子课很有用:它存储一个对象列表" Element()" (这不是工作):
class ListElements(Element):
def __init__(self, filename, list_of_filenames):
Element.__init__(self, filename)
self.liste_elements = extractData(self.list_of_filenames)
list_of_filenames = ['data'+str(i)+'.txt' for i in range(1, 201)]
我的问题是我不应该使用" filename"作为类Elements()的参数(我不能这样使用类ListElements() - 函数readFile只需要一个文件名),但我不知道发送数据的任何其他方式到Elements()。
从那一刻起,我只是在main中创建了一个带有for循环的元素列表,但它不实用,因为我需要对数据进行一些分析,而宁愿使用所有的类方法
非常感谢你的帮助!
如果您有更好的想法存储这类数据,请分享:)
答案 0 :(得分:1)
两个一般性评论:
ListElements
Element
是否 Element
答案 1 :(得分:0)
我建议你在你的init中创建一个变量self.list_of_elements,你可以传递一个文件名列表。然后在ListElement中创建一个函数,该函数使用每个文件名调用元素,并将这些对象也存储在ListElement函数中。然后,您可以从每个元素对象获取数据。 另外我建议不要让ListElement成为子对象,因为现在你的ListElement函数也获得了self.vector和self.function变量。我想这不是你想要的。
一个小例子:
class Element:
def __init__(self, filename):
self.filename = filename
self.function, self.name = readFile(self.filename)
self.vector = make_vector(table_COG_general, self.function)
class ListElements:
def __init__(self, list_of_filenames):
self.list_of_filenames = list_of_filenames
self.elements = []
def process_elements(self):
for filename in self.list_of_filenames:
self.elements.append(Element(filename))
list_of_filenames = ['data'+str(i)+'.txt' for i in range(1, 201)]
其他功能对我来说并不清楚他们做了什么,所以我无法建议你如何做到这一点。但是,使这些也是类功能可能是好的。 我希望你可以使用这个,如果你有问题可以随意提问!
答案 2 :(得分:0)
你在哪里使用chooseMedoids?它在哪里定义?
你的代码示例中的缩进不正确(我现在看到我也以错误的方式键入它)。你的脚本中是否有相同的内容?或者它是正确的方式吗?
答案 3 :(得分:0)
这是因为你试图为整个列表调用chooseMedoids。您需要遍历列表并为对象调用chooseMedoids。 例如:
for item in self.elements:
item.chooseMedoids(k)