Нас Пукас Э Рариссимас живет Que Eu физ НА Подергивание , Surgiu a Ideia de Escrever Sobre Programação Orientada abjetos em Python , Principlemente por algumas ди -комовой дельгенции. AppoveItando o Tema, vou fazer uma série de pestagens dando uma visão diferente sobre orientação abjetos. Enessa Primeira Pestagem Falarei Sobre Clasess E objetos.
USANDO UM DICIONário
Entretanto, Antes de Começar Com Orientação A objetos, Gostaria de Apresentar E Discutir Alguns Exemplos sem utilizar esse paradigma de programação.
Pensando em um sistema Que точный манипулярный Дадос де Пессоас, Es Orcive utilizar os Dicionários Do Python para Agrupar Os Dados de Uma Pessoa em Uma única variável, como no examplo a baixo:
pessoa = { 'nome': 'João', 'sobrenome': 'da Silva', 'idade': 20, }
Onde Os Dados Poderiam Ser Acessados Através da variável e do do do dado desejado, como:
print(pessoa['nome']) # Imprimindo João
Ассим, Тодос Ос Дадос де Ума Пессоа Фикам Агрупадос Эм Ума Вариавель, о Кеса Фалита Бастунте программа, Visto Que não é Eusciorio criar uma variável para cada dado, e quando se manipula OS Dados de Dierenteres Pessoas fica Muito Mais fácil Identificar de Qual Pessoa Aquele Dado Se Refere, Bastando utilizar variáveis отличается.
Фунсао Пара Криар Осионарио
Apesar de Prático, Esecyrio Replicar Essa Estrutura de Dicionário Toda Vez que se desejar utilizar odos de uma nova pessoa. Para evitar a repetição de código, Criocão Desse Dicionário Pode Ser Feita Dentro de Uma Funcáo Que Pode Ser Colocada em um módulo Пессоа
(Arquivo, Nesse Caso com o nome de pessoa.py
):
# Arquivo: pessoa.py def nova(nome, sobrenome, idade): return { 'nome': nome, 'sobrenome': sobrenome, 'idade': idade, }
E para criar o dicionário que previse uma pessoa, basta imporme esse módulo (arquivo) e Chamar a funcáo Нова
:
import pessoa p1 = pessoa.nova('João', 'da Silva', 20) p2 = pessoa.nova('Maria', 'dos Santos', 18)
Desta forma, Garante-se que todos os dicionários, представляющие песни Пессоас Ос, Кампос Дейджадос Эвидаменте Принчидос.
Funcáo com o dicionário
Тамбэм, возможно, Criar Algumas Funcões Para Execurater OperaCões Com Os Dados Desses Dicionários, Como Pegar O nome overse da pessoa, trocar o seu sobrenome, ou ano aniversrio (о Que aumentaria adade da pessoa em um ano):
# Arquivo: pessoa.py def nova(nome, sobrenome, idade): ... # Código abreviado def nome_completo(pessoa): return f"{pessoa['nome']} {pessoa['sobrenome']}" def trocar_sobrenome(pessoa, sobrenome): pessoa['sobrenome'] = sobrenome def fazer_aniversario(pessoa): pessoa['idade'] += 1
E Sendo Usado Como:
import pessoa p1 = pessoa.nova('João', 'da Silva', 20) pessoa.trocar_sobrenome(p1, 'dos Santos') print(pessoa.nome_completo(p1)) pessoa.fazer_aniversario(p1) print(p1['idade'])
Nesse Caso, Pode-se exator Que todas как Funcões aqui infuladas seguem o padrão deceber o dicionário que performa a pessoa como primeiro armery, подсознанку, ведущий аргумент, а не необходим, аэсессандо-альтернативность.
Versão com Orientação objetos
Antes de Entrar Na Versão Orientada a objetos propriamemente dita dos примеры перед собой, vou fazer uma pequena alteração para para fareilitar o intendimento. Фунсао Нова
será sepaada em duas partes, primeira que criará um dicionário, e Chamará uma segunda funcáo ( init
), que eceberá esse dicionário como primeiro Armeryo (Seguindo o padrãao das demais funcões) e criará sua estrutura com ОС Devidos Valores.
# Arquivo: pessoa.py def init(pessoa, nome, sobrenome, idade): pessoa['nome'] = nome pessoa['sobrenome'] = sobrenome pessoa['idade'] = idade def nova(nome, sobrenome, idade): pessoa = {} init(pessoa, nome, sobrenome, idade) return pessoa ... # Demais funções do arquivo
Porém isso niona muda a forma de uso:
import pessoa p1 = pessoa.nova('João', 'da Silva', 20)
Фунсао Пара Криар Ума Пессоа
Maioria das linguagens de Programação Que Vosuem O Paradigma de Programação Orientado A objetos faz o uso de classe para defir a estrutura dos objetos. O Python Também Utiliza Clasess, Que Podem Ser Definadas Com A Palavra-Chave класс
Seguidas de um nome para ela. E Dentro Dessa Estrutura, Podem Ser DefineDas Funcões Para Manipular OS objetos daquela classe, que em algumas linguagens também sãamemadas de métodos (Funcões declaradas dentro do escopo uma classe).
Para Congerter O Dicionário Para Uma Classe, O Primeiro Passo é Infular Uma Funcão Para Criar A Estrutura desejada. Essa Funcáo deve возможно o nome __init__
, E é Bastante, похожий на Funcáo init
СДЕЛАЙТЕ СДЕЛАТЬ КОДИГО:
class Pessoa: def __init__(self, nome, sobrenome, idade): self.nome = nome self.sobrenome = sobrenome self.idade = idade
Как дискенсас Сан -Кеса Агора О ПЕРИОРА ПАРЕМЕТО СЕ ЧАМА я
, que é um padrão utilizado no python, e em Vez de usar colchetes e aspas para acessar odos, aqui basta utilizar o ponto e o nome do dado desejado (que aqui também pode seramado de atributo, visto que éma varivel do obheto) Анкет Фунсао Нова
Реализада Авансаменте Нюао -необходимость, Propria linguagem cria um objeto e passa ele como primeiro аргумент, пара o __init__
Анкет E Assim para se criar um objeto da classe Пессоа
Basta Chamar A Classe Como Se Fosse Uma Funcáo, INSERANDO O ARMERO я
E Informando os demais, como se estivesse Chamando a Funcáo __init__
DIRETAMENTE:
p1 = Pessoa('João', 'da Silva', 20)
Nesse Caso, Como A Propria classe cria cria um contexto diferente para как funcões (escopo ou Пространство имен ), Науэс-майс Сенто Утилизадо Арквивос Диги-Апенас Фазер. o Импорт
адеквадо. Mas Para Simplificação, Tanto a Declaração da Classe, Como A Crioção do objeto da classe Пессоа
Podem Ser Feitas no Mesmo arquivo, Assim como OS Demais Exemplos Dessa Pestagem.
Outras Funcões
Как Demais Funcões feitas Antermente Para O Dicionário Também Podem Ser Feitas na classe Пессоа
, Seguindo, как мезма
class Pessoa: def __init__(self, nome, sobrenome, idade): self.nome = nome self.sobrenome = sobrenome self.idade = idade def nome_completo(self): return f'{self.nome} {self.sobrenome}' def trocar_sobrenome(self, sobrenome): self.sobrenome = sobrenome def fazer_aniversario(self): self.idade += 1
Para Se Chamar Essas Funcões, Basta Acessá-Las Através Do Contexto Da Classe, Passando O objeto criado Adertmente Como Primeiro Armeryo:
p1 = Pessoa('João', 'dos Santos', 20) Pessoa.trocar_sobrenome(p1, 'dos Santos') print(Pessoa.nome_completo(p1)) Pessoa.fazer_aniversario(p1) print(p1.idade)
Essa Sintaxe é Bastante Semelhante a Versão Sem Orientação A objetos реализует передний раз. Porém Quando se está utilizando objetos, é Offive Chamar Essas Funceses Com Uma Outra Sintaxe, Informando Primeiro O objeto, Seguido de Ponto e nome da funcáo desejada, com dierenca de Que noma re Mais, необходимый для информирования. Como A Funcão Foi Chamada Através de um objeto, O Próprio python se encarrega de passá-lo para o Armero я
, sendo recepation informar apenas os demais argiryos:
p1.trocar_sobrenome('dos Santos') print(p1.nome_completo()) p1.fazer_aniversario() print(p1.idade)
ESSEMEM ALGUMAS DISERENCAS ENTRE в качестве DUAS Sintaxes, Porém Isso Será Tratado Athingmente. Por Enquanto A Segunda Sintaxe Pode Ser Vista Como UM Асукар Синтатико Da Primeira, Ou Seja, Uma forma mais rápida e fácil de fazer a mesma coisa que a a primeira, e por isso sendo a recomendada.
Учитывайте
Como visto nos examplos, Programação Orientada a objetos é Uma técnica para juntar variáveis em uma mesma estrutura e farcilitar aecrita de funcões que seguem um degrinado padrão, получат, не так objeto (métodos) posiciona a variavel que guarda aestrutura antes do nome da funcão, em vez do rimeiro armeryo.
Нет Python, o Argemo Da Estrutura ou objeto ( self
) Aparece explicitamente Como Primeiro Argiryo Da Funcão, Enquanto eutras linguagens essa variável это ) e nionao aparece explicitamente nos armeryos da funcáo, embora essa variavel tenha que ser criada dentro do contexto da funcáo para ormitir manipullar o objeto.
Оригинал: “https://dev.to/acaverna/orientacao-a-objetos-de-outra-forma-classes-e-objetos-3mfd”