Рубрики
Без рубрики

Orientação abjetos de Outra Forma: Имущество

Seguindo Com a Série, Chegou Hora de Discutir Sobre Engapsulamento, Ou Seja, ocultar detaLes de im … Помечено ООП, Питон, Бразильидавс.

Seguindo Com a Série, Chegou a Hora de Discutir Sobre Engapsulamento, Ou Seja, Ocultar DetaLes de Alse Arminesação de UMA CLASSE DO RESTO DO Código. EM Algumas Linguagens de Programação Isso É Feito Utilizando защищены ou частный , E àsees o Acesso AOS Atributos é Feito Através de Funções Getter е Соседниты Отказ Nesse Texto Vamos Ve Como O Python Lida Com Essas Questões.

Métodos Protegidos E Privados

Diferente de linguagens como java e php que ausuem palavras-shave como защищены е частный Para Impedir que routras классы Acessem Dotorinanados Métodos ou Atributos, Python Deixa Tudo Como Público. Porém Isso Não Conlita Que Todas As Funções de UMA CLASSE PODEM SER CHAMADAS POR RUTRARS, OU TODOS OS ATRIBUTOS PODEM SER LIDOS E ALTERADOS SEM CUIDADOS.

Para Que Quem escriver Escrevendo UM Código Saiba Quais As Funções ou Atributos que não deveriam ser acessados diretamente, Segue-Se o Padrão de Começá-los com _ , de forma Похожие aos arquivos ocultos em sistemas unix, que começam com . . Esse Padrão Já Foi Seguido Na Classe AutenticavelComregistro Д.А. Постагема Собрей смешивание , Onde Função que Pega DO DO Sistema Foi Nomeada _get_data Отказ Entretanto Isso É Apenas UMA Suestão, Nada Impede Dela Ser Chamada, Como Нет Exemplo Baixo:

from datetime import datetime


class Exemplo:
    def _get_data(self):
        return datetime.now().strftime('%d/%m/%Y %T')


obj = Exemplo()
print(obj._get_data())

Porém Algumas Bibliotecas Também Utilizam o _ PARA AIDEAR ARTRARS INFORMACHõES COMO METADADOS DO OBJETO, E QUE PODEM SERCESADOS SEM MUITOS FLESFLEAS. Usim és usível utilizar esse símbolo duas vezes ( __ ) para индикатор que realmente Essa Variável OU Função Não Deveria Ser Acessada de fora da Classe, aresentando erro da que o Atributo não foi encontrado ao tentar executar a função, porém ela ainda Помота Ser Acessada:

from datetime import datetime


class Exemplo:
    def __get_data(self):
        return datetime.now().strftime('%d/%m/%Y %T')


obj = Exemplo()
print(obj.__get_data())  # AttributeError
print(obj._Exemplo__get_data())  # Executa a função

Имущество

ОС Getter е Соседниты Muitas Vezes São UsaDos Para Impedir Que Dotrishinadas Варивейвей Седжам Альтерадас, О вы Валир О Вагон Антес Де Atribuir A Variável, OU AINDA PLACLESAR UM Valor Partir de Artras Variveis. Porém Como O. Python Incentiva o Acesso Direto As Variveis, существующая Недвижимость Que Ao Tentar Acessar UMA Variável OU UNTERAR UM Valor, UMA Função é Chamada. Exemplo:

class Pessoa:
    def __init__(self, nome, sobrenome, idade):
        self._nome = nome
        self.sobrenome = sobrenome
        self._idade = idade

    @property
    def nome(self):
        return self._nome

    @property
    def nome_completo(self):
        return f'{self.nome} {self.sobrenome}'

    @nome_completo.setter
    def nome_completo(self, valor):
        valor = valor.split(' ', 1)
        self._nome = valor[0]
        self.sobrenome = valor[1]

    @property
    def idade(self):
        return self._idade

    @idade.setter
    def idade(self, valor):
        if valor < 0:
            raise ValueError
        self._idade = valor

    def fazer_aniversario(self):
        self.idade += 1

Nesse Código Algumas Variáveis São Acessíveis Através de свойства DE Forma Geral, как Variáveis Foram FormiDiDas CommoSto Com _ E COM UMA Недвижимость De Mesmo Nome (SEM O _ ). O PAMEIRO CASO É O Номер que Возможность apenas o Геттер , Sendo Possível o Seu Acesso Como obj.nome , Porém Ao Tentar Atribuir UM Valor, Será Lançado Ur Erro ( AttributeError: не могу установить атрибут ). EM Relação Ao Sobrenome , COMO NãAO EPARIO Nenhum Tratamento Especial, Não Foi Utilizado UM Недвижимость Porém Futuramente Pode Serfilemente Subsituído Por UM SEM Precisar ALTERAR ОС DEMAIS Códigos. Porém a função nome_completo Foi Dustituída Por. Им Недвижимость , Permitindo Tanto O ACESSO AO NOME CONSERTO DA PESSOA, COMO SE FOSSE UMA VARIáVEL, QUANTO TROCAR Номер е Sobrenome AO Atribuir UM NOVO Valor Para Essa Недвижимость Отказ Кван а Idade Утилиза О. стертание сделать имущество Para Valuear O Valor RemoCto, Retornando Erro Para Idades Inválidas (Negativas).

Vale Survear Também Que Todas как Funções de Геттер NãA BELERBEM NENHUM ARDUCTO (ALÉM DO SEA ), Enquanto как Funções de Сеттер Получение до права Atribuído à variável.

Утилизандо А ABC Anda é Assível Infornar Que ALGUMA CLASSE FILHA DEVERA Iделиц Alguma Недвижимость Отказ Exemplo:

from abc import ABC


class Pessoa(ABC):
    def __init__(self, nome, sobrenome, idade):
        self.nome = nome
        self.sobrenome = sobrenome
        self.idade = idade

    @property
    @abstractmethod
    def nome_completo(self):
        ...


class Brasileiro(Pessoa):
    @property
    def nome_completo(self):
        return f'{self.nome} {self.sobrenome}'


class Japones(Pessoa):
    @property
    def nome_completo(self):
        return f'{self.sobrenome} {self.nome}'

Рассматривать

Diferente de algumas linguagens que okultam as variáveis dos objetos, permitindo o seu adesso apenas através de funções, python seguem no sentido contrário, Acessando как Funções de Геттер е Сеттер COMO SE FOSSEM VARIáveis, Isso Premious Comment CLASSE CLASSE STRES ER ADICIONANDO Funcoliadades Conforme ELAS COREM COREMARIAS, SEM Precisar Mudar O Código DAS Demais Partes Daixar Traperação, Além de deixar Transparente Para Quem Desenvolve, NãO SENDO BURMIO LEMBRAR SE Precisa Usar Gotteres е Старяжения ou não.

De Forma Geral, Programação orientada objetos состоит из них Seguir drindinaDos Padrões de Cógeigo, e As Lingrões que Adverysam Esse Paradigma ofeerecem Cailedades Para Escrever Código Seguindo Esses Padrões, E àsees a. Nesse Contexto, ЕС Rexomendo Palestra Do Autor Do HTOP Feita No Fisl 16, Onde Elementa Como USOU orientação objetos em c Отказ E Para Quem Ainda Quire Quier SE APROFUNDAR NO ASSUNTO de orientação objetos no python, recomendo os vídeos do Эдуардо Мендес (Também Conhecido Como Dunossauro).

Оригинал: “https://dev.to/acaverna/orientacao-a-objetos-de-outra-forma-property-j5j”