Alternativa B - def init(self, nome, estoque=0):
Explicação Didática
Esta questão avalia o conhecimento sobre a sintaxe de definição de métodos na linguagem Python, especificamente sobre métodos especiais (também chamados de dunder methods).
1. Sintaxe de Métodos em Python
Em Python, para criar um método dentro de uma classe, utilizamos a palavra-chave def (de define), seguida do nome do método e dos parâmetros entre parênteses.
- Correto:
def metodo(self, parametro): - Incorreto:
class metodo(...) (Usado para definir classes, não métodos).
2. O Método Especial init
O texto da questão destaca que os métodos começam e terminam com dois sublinhados (). O método mais comum é o construtor, chamado init__.
- Ele é responsável por inicializar os atributos do objeto quando ele é criado.
- Sua assinatura padrão exige
self como primeiro argumento, seguido de outros parâmetros opcionais ou obrigatórios.
3. Análise das Alternativas
Vamos verificar cada opção apresentada nas caixas da imagem:
| Opção | Código | Análise |
|---|
| 1ª | class init(...) | ❌ Usa class. Isso tentaria criar uma nova classe chamada init, não um método. |
| 2ª | def init(self, nome, estoque=0): | ✅ Correta. Usa def, tem o nome correto init e a sintaxe de argumentos correta (self único). |
| 3ª | class str(...) | ❌ Usa class e possui múltiplos argumentos self (inválido). |
| 4ª | def repr(...) | ❌ Embora use def, possui múltiplos argumentos self (excesso de parâmetros). |
| 5ª | class init(...) | ❌ Usa class novamente. |
Conclusão
A única alternativa que segue a sintaxe correta para definir um método construtor em Python é a segunda opção. Ela utiliza a palavra-chave def, define o método init e passa os parâmetros corretos (self, nome, estoque=0).
Portanto, a resposta correta é a Alternativa B.