如何使用Python中的类在另一个函数中使用一个函数
我看过视频和阅读文本,但我仍然很难掌握类和它们的语法以及它们如何交互。我有下面的代码,它接收CSV并将其放入列表中的dict中。我想在其他函数中分析这个列表,但我不知道如何调用和使用它 如何使用“顶级艺术家”中的“数据到记录”列表如何使用Python中的类在另一个函数中使用一个函数,python,class,python-2.7,Python,Class,Python 2.7,我看过视频和阅读文本,但我仍然很难掌握类和它们的语法以及它们如何交互。我有下面的代码,它接收CSV并将其放入列表中的dict中。我想在其他函数中分析这个列表,但我不知道如何调用和使用它 如何使用“顶级艺术家”中的“数据到记录”列表 class allData: def data_to_dict(self): try: with open(self.filename, 'r') as data: header = d
class allData:
def data_to_dict(self):
try:
with open(self.filename, 'r') as data:
header = data.readline().strip().split(',')
entries = []
for row in data:
entry = row.strip().split(',')
listens = {}
for col_pos, col_header in enumerate(header):
listens[col_header] = entry[col_pos]
**return entries**
entries.append(listens)
except IOError:
return "Error."
def Top_Artists():
**entries = self.data_to_dict()**
artist_count = Counter()
for d in entries:
# counts unique artists
arts = d['artist']
artist_count[arts] += 1
更新:
我解决了我的问题——除了“自我”和数据表中的返回,我补充道:
def __init__(self, filename):
self.filename = filename
我可以在这里看到一些问题。最明显的解决方案是
entries = self.data_to_dict()
没有必要的参数即filename set,也没有必要的self参数,正如注释中正确指出的那样。因此,您需要发送类似以下内容的文件名:
entries = self.data_to_dict("path/to/file")
其他代码应如下所示:
def data_to_dict(self, filename):
作为最简单的硬编码解决方案,我不清楚您想用这个示例做什么。类函数接受一个通常称为self的参数,您可以修改该参数。例如:
class Foo:
def make_list(self):
self.my_list = [1,2,3]
x = Foo()
x.make_list()
print(x.my_list)
查看有关类的python教程了解更多信息:
当Python中类中的方法必须将关键字self作为参数传递时,这将返回完全位于同一变量上的类
class Something:
def method_1(self):
# type something
def method_2(self):
other = self.method_1()
方法\u 2使用方法\u 1。您不能,因为它既没有返回,也没有存储为实例属性。此外,没有任何方法具有self参数。强烈地考虑遵循一个正式的教程。@ JrnRaSpe是完全正确的。当for循环完成添加条目时,您需要返回条目。您需要显式的自引用作为所有类方法的第一个参数:这是我的错,我做了def,但是为了我的问题,我很快将它们放在了类中-所以我忘了自引用。我想我需要更多的练习。数据缺乏自我论证,所以单凭这一点并不能真正解决问题。我已经有一段时间没有认真学习python了,已经完全忘记了。谢谢,谢谢!我终于解决了我的问题。我添加了一个def init来处理输入文件,并向data_to_dict添加了一个“return”。然后我只需要“entries=self.data_to_dict”就可以让另一个def工作。哈哈哈,对不起@jornsharpe,有时会与php python和ruby混淆