python: la función toma exactamente 1 argumento (2 dados)

Tengo este método en una clase

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)) 

pero cuando trato de llamarlo así:

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

Tengo el siguiente error:

 parseList() takes exactly 1 argument (2 given) 

Intenté agregarse como un argumento al método, pero cuando lo hago, el error que recibo es el siguiente:

 global name 'parseList' is not defined 

No me queda muy claro cómo funciona esto realmente.

¿Alguna pista?

Gracias

Te olvidaste de la self discusión.

Necesitas cambiar esta línea:

 def parseList(tag): 

con:

 def parseList(self, tag): 

También recibiste un error de nombre global, ya que estás intentando acceder a parseList sin parseList self .
Mientras que debes hacer algo como:

 self.parseList(item) 

dentro de tu metodo

Para ser específico, debe hacerlo en dos líneas de su código:

  return [self.parseList(item) 

y

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