Questão de Programação — Programação Orientada a Objetos — Quadrix 2025
- Código
- qg594714
- Banca
- Quadrix
- Órgão
- CFBio
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Desenvolvimento
- CCerto
- EErrado
GabaritoE — Errado
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)Já 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 |
|---|---|---|
| Acessa o valor de um atributo específico | O valor do atributo (qualquer tipo) |
| Lista os nomes dos atributos e métodos | Lista de strings |
| Verifica se um atributo existe | Booleano ( |
| Define o valor de um atributo |
|
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 💪.
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