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

时间:2014-12-08 20:53:38

标签: python class python-2.7

我观看了视频和阅读文字,但我仍然很难掌握课程及其语法以及它们如何互动。我有以下代码,它接受CSV并将其放入列表中的dict。我希望在其他功能中分析此列表,但我不知道如何调用它并使用它。

如何使用' data_to_dict'中的列表?在' Top_Artists'?

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

更新: 我想出了我的问题 - 除了“自我”和“data_to_dict”中的回复之外,我补充道:

def __init__(self, filename):
    self.filename = filename

3 个答案:

答案 0 :(得分:0)

我在这里可以看到几个问题。

是最明显的解决方案
entries = self.data_to_dict() 

没有设置必要的参数(即文件名),也没有在注释中正确指出它是否具有必要的自身参数。因此,您需要以与此类似的方式发送文件名:

entries = self.data_to_dict("path/to/file")

,其他代码如下:

def data_to_dict(self, filename):

是最简单的硬编码解决方案

答案 1 :(得分:0)

我不清楚你要用这个例子做什么。类函数采用可以修改的参数(通常称为" self")。例如:

class Foo:
    def make_list(self):
        self.my_list = [1,2,3]

x = Foo()
x.make_list()
print(x.my_list)

查看关于类的python教程了解更多信息: https://docs.python.org/2/tutorial/classes.html

答案 2 :(得分:0)

当Python中的某个类中的方法必须以关键字 self 作为参数传递时,这将完全在同一个变量上返回该类。

class Something:

    def method_1(self):
        # type something

    def method_2(self):
        other = self.method_1()

method_2使用method_1