Pular para o conteúdo principal

Questão de Programação — Programação Orientada a Objetos — Quadrix 2025

ProgramaçãoProgramação Orientada a Objetos
Código
qg594714
Banca
Quadrix
Órgão
CFBio
Ano
2025
Nível
Superior
Cargo
Analista de Desenvolvimento
Considerando as linguagens de programação e a análise orientada a objetos (AOO), julgue o item a seguir.Em Python, o comando getattr() retorna uma lista com os atributos e os métodos disponíveis para um objeto ou um módulo.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Python: getattr() e introspecção de objetos

Gabarito: ERRADO. A função embutida getattr() do Python não retorna uma lista de atributos e métodos; ela acessa o valor de um atributo específico de um objeto ou módulo, dado o nome do atributo como string. Quem retorna a lista de nomes de atributos e métodos é a função dir(). A afirmação confunde duas funções de introspecção distintas da linguagem.

A introspecção é a capacidade de um programa examinar seus próprios objetos em tempo de execução. Python oferece várias funções embutidas para isso, e getattr() e dir() são duas das mais conhecidas — mas com papéis bem diferentes.

getattr(objeto, nome[, default]) é usada para obter o valor de um atributo cujo nome é conhecido dinamicamente, ou seja, como uma string. É o equivalente programático de objeto.nome, mas permite que o nome do atributo seja decidido em tempo de execução. Se o atributo não existir e um valor padrão não for fornecido, ela lança a exceção AttributeError. Exemplo:

class Pessoa:
    nome = "João"

p = Pessoa()
print(getattr(p, "nome"))  # João
print(getattr(p, "idade", 30))  # 30 (padrão, pois não existe)

dir([objeto]) é a função que, sem argumentos, retorna a lista de nomes no escopo local; com um objeto como argumento, retorna uma lista ordenada de strings com os nomes dos atributos e métodos válidos daquele objeto. É ela que a banca descreveu erroneamente como sendo o comportamento de getattr().

A confusão entre getattr() e dir() é um clássico em questões de Python. A banca troca a função que acessa um atributo pela função que lista os atributos. Para não cair nessa pegadinha, lembre-se:

Função

O que faz

Retorno

getattr(obj, nome)

Acessa o valor de um atributo específico

O valor do atributo (qualquer tipo)

dir(obj)

Lista os nomes dos atributos e métodos

Lista de strings

hasattr(obj, nome)

Verifica se um atributo existe

Booleano (True/False)

setattr(obj, nome, valor)

Define o valor de um atributo

None

NÃO CAIA NESSA!

A banca adora inverter as funções de introspecção do Python. Aqui, ela atribuiu a getattr() o comportamento de dir(). O candidato que decora a função sem entender o papel de cada uma cai direto. Lembre-se: getattr pega um atributo; dir lista os atributos. Com treino, você enxerga essas trocas de longe 💪.

1getattr(obj, nome)
acessa valor de atributo específico
lança AttributeError se não existir
2dir(obj)
lista nomes de atributos e métodos
retorna lista de strings
3hasattr(obj, nome)
verifica se atributo existe
retorna booleano
4setattr(obj, nome, valor)
define valor de atributo
retorna None
Introspecção em Python
LEVELsoulevel.com.br
Introspecção em Python: getattr(obj, nome) (acessa valor de atributo específico, lança AttributeError se não existir); dir(obj) (lista nomes de atributos e métodos, retorna lista de strings); hasattr(obj, nome) (verifica se atributo existe, retorna booleano); setattr(obj, nome, valor) (define valor de atributo, retorna None)

Item — ❌ Errado

A afirmação está errada porque descreve o comportamento de dir(), não de getattr(). getattr() retorna o valor de um atributo específico, não uma lista de todos os atributos e métodos. A função que retorna a lista de nomes de atributos e métodos disponíveis para um objeto ou módulo é dir(). Portanto, o item está incorreto.

Gabarito: ERRADO.

Link permanente: /questoes/qg594714