image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
Alexandre Nascimento
Alexandre Nascimento12/05/2025 13:59
Compartilhe
Microsoft 50 Anos - Prompts InteligentesRecomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes

Encapsulamento (Python)

    Em Python, encapsulamento é o conceito de restringir o acesso direto aos dados internos de uma classe, permitindo acessá-los apenas por métodos definidos. Isso é feito principalmente usando variáveis privadas e métodos públicos de acesso/modificação (getters e setters).

    1. Encapsulamento com underscore duplo (__)

    Usamos __ para tornar um atributo privado:

    class ContaBancaria:
      def __init__(self, titular, saldo):
          self.__titular = titular
          self.__saldo = saldo
    
      def get_saldo(self):
          return self.__saldo
    
      def depositar(self, valor):
          if valor > 0:
              self.__saldo += valor
    
      def sacar(self, valor):
          if 0 < valor <= self.__saldo:
              self.__saldo -= valor
          else:
              print("Saldo insuficiente ou valor inválido.")
    

    2. Usando @property (forma mais "pythônica")

    Você pode usar os decoradores @property e @<atributo>.setter para um controle mais elegante:

    class ContaBancaria:
      def __init__(self, titular, saldo):
          self.__titular = titular
          self.__saldo = saldo
    
      @property
      def saldo(self):
          return self.__saldo
    
      @saldo.setter
      def saldo(self, valor):
          if valor >= 0:
              self.__saldo = valor
          else:
              print("Valor inválido para saldo.")
    
    # Exermplo:
    conta = ContaBancaria("Ana", 1000)
    print(conta.saldo)        # Acessa como se fosse atributo
    conta.saldo = 1500        # Modifica com validação
    print(conta.saldo)
    

    Conclusão

    O encapsulamento em Python não é absoluto como em outras linguagens (como Java ou C++), mas é respeitado por convenção. Se você usar __atributo, o acesso externo será dificultado. Com @property, você ainda esconde a lógica de acesso/modificação de forma clara e segura.

    Compartilhe
    Recomendados para você
    Microsoft 50 Anos - Prompts Inteligentes
    Microsoft 50 Anos - GitHub Copilot
    Microsoft 50 Anos - Computação em Nuvem com Azure
    Comentários (0)
    Recomendados para vocêMicrosoft 50 Anos - Prompts Inteligentes