1
resposta

[Dúvida] Objeto não iterável

Esse é meu código

def lista_repositorios(self):
        repos_list = []
        page = 1

        while True:
            url_page = f'{self.api_base_url}/users/{self.owner}/repos?page={page}'
            response = requests.get(url_page, headers=self.headers)
        
            if not response.json():
                break

            repos_list.append(response.json())
            page += 1

        return repos_list

    
    def nomes_repos(self, repos_list):
        repos_names = []
        for page in repos_list:
            for repo in page:
                try:
                    repos_names.append(repo['name'])
                except:
                    pass
        return repos_names

E estou tendo o seguinte erro e não sei como resolver: line 33, in nomes_repos for page in repos_list: TypeError: 'method' object is not iterable

1 resposta

Olá, Fábio! Como vai?

Repare que a indentação do seu código está colocando o método nomes_repos dentro do método lista_repositorios. Corrija dessa forma:

def lista_repositorios(self):
    repos_list = []
    page = 1

    while True:
        url_page = f'{self.api_base_url}/users/{self.owner}/repos?page={page}'
        response = requests.get(url_page, headers=self.headers)

        if not response.json():
            break

        repos_list.append(response.json())
        page += 1

    return repos_list

    
def nomes_repos(self, repos_list):
    repos_names = []
    for page in repos_list:
        for repo in page:
            try:
                repos_names.append(repo['name'])
            except:
                pass
                
    return repos_names

Após essa correção, execute o código novamente e nos informe se resolveu!

Espero ter ajudado e fico à disposição se precisar.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado