1
resposta

Comportamento estranhoa

No exemplo do exercício : 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 print(r.obter_area())

Achei esquisito o comportamento, tinha entendido que mesmo sendo colocado como "privado" e com o python "alertando" ao desenvolvendo mas mesmo assim ele aceitaria o r.area = 7 e o valor do acabaria por retornar 7. Curioso...

1 resposta

Olá! Tudo bem? Realmente, o comportamento que você observou é um pouco estranho, mas é importante entender que, mesmo que um atributo seja declarado como privado (usando "__" antes do nome do atributo), ainda é possível acessá-lo e modificá-lo diretamente, como foi feito no exemplo que você postou.

No caso, a linha "r.area = 7" está criando um novo atributo "area" no objeto "r", que não é o mesmo atributo "__area" declarado na classe. Por isso, ao chamar o método "obter_area()", o valor retornado é o valor original de "__area", que foi calculado no momento da criação do objeto. Para acessar e modificar o valor de "__area", é necessário criar um método específico na classe, como foi feito com "obter_area()".

Bons estudos!