Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Entendendo o resultado da class Retangulo

Então, pelo o que eu entendi ele só vai retornar o 7 se você não chamar o atributo __area.

class Retangulo:

    def __init__(self, x, y):
        self.__x = x
        self.__y = y
        self.__area = x * y

    def obter_area(self):
        return self.area   <-----

r = Retangulo(7,6)
r.area = 7
r.obter_area()

saída: 7
class Retangulo:

    def __init__(self, x, y):
        self.__x = x
        self.__y = y
        self.__area = x * y

    def obter_area(self):
        return self.__area   <-----

r = Retangulo(7,6)
r.area = 7
r.obter_area()

saída: 42

É isso???

Valeeeu!!!

2 respostas
solução!

Olá, Nícolas. Tudo bem?

Como você criou um novo atributo, o .area, você precisaria chamar um método que o retornasse para poder ver seu conteúdo, como o obter_area(), por exemplo. Isso só é possível quando você muda o retorno do método obter_area() para self.area, ou seja, você está retornando o atributo que você acabou de criar fora da classe.

Quando o retorno do método é self.__area, o resultado é 42 porque o atributo __area já tinha sido criado na classe, e ele recebe um cálculo.

Por exemplo, se você não criar um novo atributo chamado .area, e deixar o retorno do obter_area() como self.area, dessa forma:

class Retangulo:

    def __init__(self, x, y):
        self.__x = x
        self.__y = y
        self.__area = x * y

    def obter_area(self):
        return self.area   #<-----

r = Retangulo(7,6)
#r.area = 7
r.obter_area()

Você receberá o seguinte erro:

AttributeError: 'Retangulo' object has no attribute 'area'

Ou seja, não podemos retornar o self.area pois não o criamos. Por isso, quando criamos o método através do r.area = 7, podemos utilizá-lo como retorno no método obter_area() por meio do self.area.

Espero ter contribuído, Nícolas. Se tiver mais alguma dúvida, estou à disposição. Bons estudos =)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigadoooooooooo!!!!!!!!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software