python:函数只需1个参数(给定2个)

时间:2012-02-15 22:23:07

标签: python class methods

我在类

中有这个方法
class CatList:

    lista = codecs.open('googlecat.txt', 'r', encoding='utf-8').read()
    soup = BeautifulSoup(lista)    
    # parse the list through BeautifulSoup
    def parseList(tag):
        if tag.name == 'ul':
            return [parseList(item)
                    for item in tag.findAll('li', recursive=False)]
        elif tag.name == 'li':
            if tag.ul is None:
                return tag.text
            else:
                return (tag.contents[0].string.strip(), parseList(tag.ul))

但是当我尝试这样称呼它时:

myCL = CatList()
myList = myCL.parseList(myCL.soup.ul)

我有以下错误:

parseList() takes exactly 1 argument (2 given) 

我尝试将self添加为方法的参数但是当我这样做时,我得到的错误如下:

global name 'parseList' is not defined 

我不太清楚这实际上是如何运作的。

任何提示?

由于

1 个答案:

答案 0 :(得分:20)

您忘记了self参数。

您需要更改此行:

def parseList(tag):

使用:

def parseList(self, tag):

您还遇到了全局名称错误,因为您尝试在没有parseList的情况下访问self
虽然你应该做类似的事情:

self.parseList(item)

在你的方法中。

具体而言,您需要在代码的两行中执行此操作:

 return [self.parseList(item)

 return (tag.contents[0].string.strip(), self.parseList(tag.ul))