Considere as linhas de código, escritas na linguagem Python...
1. class Oficial: 2. def__init__(self, nome, posto, idade=99); 3. self.nome = nome 4. self.posto = posto 5. self, idade = idade 6; 7. oficial = new Oficial("Joaquim Marques Lisboa", "ALTE") 8. print(oficial.nome)
É correto afirmar que para compilar e executar corretamente as linhas de código devemos:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é D - excluir o termo 'new' na linha 7.
Vamos entender o porquê. A questão envolve conceitos básicos de programação orientada a objetos na linguagem Python. Python 3, por ser orientada a objetos, usa classes para criar estruturas de dados personalizadas. Quando criamos uma instância de uma classe, usamos a sintaxe própria da linguagem.
No Python, para criar uma instância de uma classe, utilizamos o nome da classe diretamente, ou seja, oficial = Oficial("Joaquim Marques Lisboa", "ALTE")
. Ao contrário de algumas outras linguagens de programação, como Java, que utilizam a palavra-chave new
para instanciar objetos, em Python essa palavra não é necessária.
Alternativa D: A correção aqui é remover a palavra new
da linha 7, pois ela não é parte da sintaxe de Python. Após essa correção, o código instanciará a classe corretamente.
Agora, vejamos por que as outras alternativas estão incorretas:
Alternativa A: Não há necessidade de definir o atributo self
nas linhas mencionadas. O self
é um parâmetro que deve ser passado para os métodos dentro da classe, mas não precisa ser definido externamente.
Alternativa B: Embora atribuir um valor para idade
na linha 7 seja possível, não é necessário, pois já foi definido um valor padrão (99) no construtor da classe. Portanto, isso não corrige o erro de execução do código.
Alternativa C: Excluir o termo self
da linha 2 iria causar um erro, pois self
é necessário para referenciar atributos e métodos da instância atual da classe.
Alternativa E: Substituir idade=99
por idade
na linha 2 removeria o valor padrão do argumento, mas isso não está relacionado ao erro de execução do código. A sintaxe está correta com o valor padrão.
Com essas explicações, espero ter clarificado não só o motivo da alternativa correta, mas também os equívocos das demais opções. A atenção a detalhes como a sintaxe correta para instanciar objetos em Python é essencial para evitar erros de execução em seus códigos.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
a) O self representa a própria instância da classe, não faz sentido defini-la
b) Posso atribuir valor para a variável "idade", mas isso não resolverá o problema
c) O self é obrigatório na assinatura de todos os métodos não-estáticos
d) Não existe a palavra reservada "new" em Python. Se removê-la, o código funcionará
e) O "idade=99" define um valor padrão caso nada seja passado. Se removermos, teríamos que passar um valor no argumento do construtor
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo