FC ConcursosFC Concursos

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

  1. linha 3 a classe B está herdando A.
  2. linha 4 o atributo é considerado privado.
  3. linha 5 exibe um método construtor.
  4. linha 9 o objeto a é uma instância da classe B.
  5. 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

Continue aprendendo