Analise o código Python a seguir. class ClasseX: a = 10 ...... Para que esse código exiba o número 20, o trecho pontilhado deve ser substituído por:
- A)print(classeX.a * 2)
Errada, porque classeX não foi definida com essa grafia e, além disso, o código acessa a classe sem instanciar o objeto no trecho pedido.
- B)print(this.a * 2)
Errada, porque this não é palavra-chave válida em Python para representar o objeto corrente.
- C)X = ClasseX() print(X.a * 2)
Certa, porque cria uma instância de ClasseX e depois acessa o atributo a, permitindo imprimir 10 * 2 = 20.
- D)X = new(ClasseX) print(X.a * 2)
Errada, porque new(ClasseX) não é a forma de instanciar classes em Python.
- E)X = object of ClasseX print(X.[a * 2])
Errada, porque a sintaxe object of ClasseX e X.[a * 2] não existe em Python.
Gabarito: C
Em Python, uma classe pode ter atributos de classe, como esse a = 10, que pertencem à própria classe e podem ser acessados por uma instância. Para usar o valor com a sintaxe de objeto, normalmente voce primeiro cria o objeto com ClasseX() e depois acessa X.a. Isso faz o programa enxergar 10 e multiplicar por 2, chegando em 20. O ponto central aqui é que class ClasseX: a = 10 define um atributo compartilhado, não uma variável solta no código. Sem instanciar, voce até pode acessar o atributo pela classe, mas a alternativa precisa bater com o trecho pedido e com a escrita correta do Python. Por isso, o gabarito é a letra C: X = ClasseX() cria uma instância de ClasseX e print(X.a * 2) lê o atributo a dessa instância, que resolve para o valor 10. Ao multiplicar por 2, a saída é 20. As outras opções erram por nome inválido, sintaxe inexistente ou por usar uma forma que não existe em Python. Em prova, a banca gosta muito de misturar criação de objeto com acesso a atributo, então vale guardar a sequência: classe -> instância -> atributo.