Analise o código Python 2.7 a seguir.class End_simples(objec...

Próximas questões
Com base no mesmo assunto
Q914435 Programação

Analise o código Python 2.7 a seguir.


class End_simples(object):

def __init__(self, rua, num, bai):

self.rua = rua

self.num = num

self.bai = bai


def Endereco(self):

return self.rua + ", " + self.num \

+ " " + self.bai


class End_com(End_simples):


def __init__(self, rua, num, bai, com):

End_simples.__init__(self,rua, num, bai)

self.com = com


def Endereco(self):

...


a = End_simples("Av Brasil", "243", \

"Floresta")

b = End_com("Av Miracema", "12", \

"Centro", "apto 3")


print(a.Endereco())

print(b.Endereco())


Sabe-se que a execução desse código produziu as duas linhas a seguir.


Av Brasil, 243 Floresta

Av Miracema, 12 Centro, apto 3


Assinale a opção que apresenta a correta definição para o método Endereco na classe End_com.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a C.

O tema da questão é o entendimento de herança em classes e a sobreposição, ou override, de métodos em Python 2.7. Na herança de classes, uma classe filha pode herdar atributos e métodos de uma classe pai, mas também pode modificar ou estender alguns desses métodos. Este é um conceito fundamental da programação orientada a objetos (OOP), que visa promover a reutilização de código e a criação de relações hierárquicas entre classes.

No código apresentado, temos duas classes: End_simples como a classe pai e End_com como a classe filha. A classe filha herda os atributos e o método Endereco da classe pai, mas precisa adicionar informações adicionais (o complemento do endereço) ao endereço existente.

Para justificar a alternativa correta:

A alternativa C está correta porque utiliza a função super() para acessar o método da classe pai End_simples e depois estende sua funcionalidade ao adicionar o complemento do endereço. No contexto do Python 2.7, super(End_com, self).Endereco() é a maneira correta de chamar o método da classe pai de dentro da classe filha. Depois de obter o endereço da classe pai, a função adiciona a string ", " seguida pelo complemento de endereço armazenado em self.com.

A saída correta do método Endereco da classe End_com seria a concatenação do endereço fornecido pelo método Endereco da classe pai End_simples com o complemento de endereço. Portanto, a implementação correta do método Endereco na classe filha End_com deveria ser:

def Endereco(self):
    return super(End_com, self).Endereco() + ", " + self.com

Isso produzirá a saída desejada conforme mostrado na execução do código na questão, onde o endereço do objeto b é corretamente formatado com o complemento.

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

https://www.pythonforbeginners.com/super/working-python-super-function

 return super(End_com, self).Endereco() \ + ", " + self.com 

letra c

desgraça, me arrombei nessa

Versão antiga do Python, tem nem suporte mais. Se fosse Python 3+, seria:

return super().Endereco() + ", " + self.com

Em Python 2:

class SubClass(MyParentClass):

def __init__(self):

super(SubClass, self).__init__()

Em Python 3:

class SubClass(MyParentClass):

def __init__(self):

super()

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo