如何使用Python中的类在另一个函数中使用一个函数

如何使用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

我看过视频和阅读文本,但我仍然很难掌握类和它们的语法以及它们如何交互。我有下面的代码,它接收CSV并将其放入列表中的dict中。我想在其他函数中分析这个列表,但我不知道如何调用和使用它

如何使用“顶级艺术家”中的“数据到记录”列表

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混淆