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!