Questão FC441305
Considere: 1 class A: 2 a = 1 3 class B(A): 4 _c = 3 5 def__init__(self): 6 print self.a 7 print self._c 8 a = A() 9 print isinstance(a, B) 10 b = B() 11 print isinstance(b, B) 12
Linguagens de Programação para Ciência de Dados
FCC · 2012
Considere:
1 class A:
2 a = 1
3 class B(A):
4 _c = 3
5 def__init__(self):
6 print self.a
7 print self._c
8 a = A()
9 print isinstance(a, B)
10 b = B()
11 print isinstance(b, B)
12 b = A()
13 print isinstance(b, A)
Em relação à sintaxe em Python, é INCORRETO afirmar que na
- linha 3 a classe B está herdando A.
- linha 4 o atributo é considerado privado.
- linha 5 exibe um método construtor.
- linha 9 o objeto a é uma instância da classe B.
- linha 13 o objeto b é uma instância da classe A.
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
A afirmação da linha 9 está incorreta porque o teste isinstance(a, B) verifica se o objeto a pertence à classe B ou a uma de suas subclasses. Aqui a = A(), ou seja, a é uma instância direta de A, não de B.
Como B herda de A, todo objeto de B também é considerado de A. O inverso, porém, não é verdadeiro: um objeto criado como A() não passa no teste para B. Portanto isinstance(a, B) retorna False, mostrando que a frase "o objeto a é uma instância da classe B" está errada.
Conteúdo do catálogo FC Concursos · Atualizado em