O GoConqr está de visual novo! Conte para nós o que você achou.

Mapa mental

Python - OO

Isaque Paulo Python Linguagem de programção Português

Python - OO

Conteúdo do mapa

Python - OO

  1. I. Classes

    • 1. Introdução
      • pessoa.py
        • class Nome:
          • Por convenção sempre inicia com letra maiúscula
      • main.py
        • from pessoa import Pessoa
          • Importar
        • p1 = Pessoa()
          • Criar um objeto a partir da classe
          • p2 = Pessoa()
            • p1 é diferente de p2
              • Com isso podemos criar variáveis que pertencem só a uma pessoa
                • p1.nome = 'João'
                • Atributo da pessoa
    • 2. Métodos da Instância
      • main.py
      • pessoa.py
          • A palavrinha self refere-se à instância p1
            • É como se fosse falar(p1)
        • __init__
          • a classe inicializa os atributos do objeto
            • p1 = Pessoa('Luiz', 29)
            • p1 = Pessoa(idade=29, nome='Luiz')
          • Ela diferencia as variáveis da instância e variáveis da classe
              • Se for utilizar a variavel_da_classe em outro método, continuaremos utilizando self.variavel_da_classe
        • comer()
            • p1.comer('Maçã')
              • Luiz está comendo maçã.
              • p1.comer('Pera')
                • Luiz já está comendo.
            • return faz com que o resto do método não seja executado
    • 3. Convenção de Nomes
      • PascalCase
        • significa que todas as palavras iniciam com letra maiúscula e nada é usado para separá-las
          • MinhaClasse
          • MeuObjeto
      • camelCase
        • a primeira letra sempre será minúscula e o restante das palavras deverá iniciar com letra maiúscula
          • minhaFuncao
        • Não é utilizada em python
      • snake_case
        • Todas as letras serão minúsculas e separadas por um underline
          • minha_variavel
          • funcao_legal
    • 4. Métodos da Classe
      • pessoa.py
          • cls quer dizer que estou me referindo à classe
            • Então não terei acesso ao parâmetro self e sim ao cls
              • Logo, só terei acesso as variáveis(atributos) da classe e não as da instância
          • @classmethod indica que se trata de um método de classe e não de instância
      • main.py
          • Observe que o método de classe por_ano_nascimento() é um factory method pois ele retorna um objeto da classe, ele fabrica o objeto para a gente
    • 5. Métodos Estáticos
      • Eles não precisam nem da instância nem da classe
        • é como se fosse uma função normal que foi colocada dentro da classe para ficar organizado
      • pessoa.py
      • main.pu
    • 6. Getters/ Setters
      • setter irá configurar um padrão para quando for declarar o atributo da instância
        • Muitas vezes o __init__ faz papel de setter
      • getter irá nos retornar o valor do atributo da instância que chamamos
      • preco.py
          • Esse algoritmo permite que ao definirmos o preço dos produtos utilizemos tanto números quanto R$
          • Esse algoritmo faz com que o nome do produto seja composto sempre com a primeira letra maiúsucla e o restanto minúsculo
      • main.py
      • Exemplo
    • 7. Atributos de Classe
        • A.vc altera o valor da variável da classe A
        • a1.vc está criando um atributo direto na instância a1
  2. II. Encapsulamento

    • Serve para proteger a classe, "escondendo" métodos/atributos
    • Problema
      • basededados.py
      • main.py
          • bd.dados foi destruído por um arquivo fora da classe
      • Solução
        • O python não adota as palavras public, protected, private
        • Convenção
          • self._dados
            • o _ serve para indicar que o atributo não deve ser utilizado fora da classe
          • self.__dados
            • mais forte que o anterior
            • Liberando para acesso externo
                • print(bd.dados)
                  • Agora quando tentarmos modificar bd.dados externamente trará uma exceção
  3. III. Relação

    • 1. Associação
      • Situação
        • classes.py
        • main.py
      • Como fazer essas classes se relacionarem por associação?
        • Modificações
          • classes.py
            • Escritor
            • Caneta
            • MaquinaDeEscrever
          • main.py
      • Quer dizer que uma classe pode viver sem a outra
      • 2. Agregação
        • A classe CarrinhoDeCompras pode existir sozinha mas precisa de produtos para fazer suas operações, a classe Produto também pode existir sozinha mas pode fazer parte de outras partes do programa
        • classes.py
        • main.py
      • 3. Composição
        • Uma classe vai ser dona de objetos de outra classe
          • No momento em que um cliente é apagado, todos os endereços referentes à ele também serão
        • classes.py
        • main.py
    • 4. Herança Simples
      • 1. Problema
          • Código repetido
      • 2. Solução
        • classes.py
            • Cliente e Aluno herdam tudo de Pessoa
            • Pessoa é uma superclasse
            • Cleinte é uma subclasse
            • Métodos específicos
            • Cliente/Aluno é uma especialização de Pessoa
        • main.py
      • 3. Sobreposição de membros
        • Sobrescrever falar
        • Primeiro executar falar da superclasse Pessoa, depois executar o falar de ClienteVip
        • __init__
      • 4. Classe Pai Pode Invocar Método de Classe Filho
    • 5. Herança Múltipla
        • Qual o resultado de D.falar()?
        • No caso de heranças múltiplas, o python irá procurar o método na classe da esquerda para a direita
      • Exemplo: Classe que gera log
  4. IV. Classes Abstratas

    • 1. Como criar
      • 1. Importação mínima
        • from abc import ABC, abstractmethod
          • abc = abstract base class
      • É uma classe genérica que não quero que ela seja instânciada
        • Uma classe genérica pode conter métodos concretos ou métodos abstratos
          • O método abstrato é um método que não tem corpo, serve para que as classes filhas herdem este método e sejam obrigadas a criarem esse método dentro dessas classes filhas
      • 2. Declaração
          • Agora todas as classes filhas de A terão que instanciar o método falar
            • Polimorfismo de sobreposição
              • É o princípio que permite que classes derivadas de uma mesma superclasse tenham métodos iguais (de mesma assinatura) mas comportamentos diferentes.
                • mesma assinatura = mesma quantidade e tipo de parâmetros
                  • ou seja se o método abstrato utilizar a assinatura (self, msg), as classes filhas deverão adotar a mesma assinatura (self, msg)
      • 3. Exemplo de classe abstrata com métodos concretos e mistos
  5. V. Criando Exceções Personalizadas

  6. VI. Sobrecarga de Operadores

    • é possível alterar o comportamento dos operadores em python
    • Métodos
    • Alterando o operador + e comando print
  7. VII. Métodos Mágicos

    • São todos aqueles iniciados por __
      • https://rszalski.github.io/magicmethods/
    • O __init__ na verdade não é o construtor
        • Dessa forma é como se fizessemos a classe não ser construída, por isso o type(a) é NoneType
      • Foi utilizado o comando super() pois todas as classes na verdade derivam de object
        • super().__new__(cls) pode ser substituído por object.__new__(cls)
    • Criar métodos/variáveis de classe
    • Criar uma classe que só será instanciada uma vez
    • Impedir que alguém sete um atributo nome
    • Alterando quando a classe for utilizada como string
    • Alterando o comportamento da função len()
  8. VIII. Gerenciadores de Contexto

    • Toda vez que eu for abrir alguma coisa e fechar alguma coisa terei de utilizar um gerenciador de contexto
      • Ex.: Escrever em um arquivo
      • Ex.: Conexão de rede
      • Ex.: DB
    • Escrever em um arquivo
    • Criar gerenciador de contexto personalizado
        • Desativar erros
    • Método 2
    • Utilizar sempre o comando with
  9. IX. Metaclasses

    • A metaclasse é a classe responsável por criar as classes
    • Em Python tudo é um objeto, inclusive as classes
    • 1. Uma ClASSE pAI CHAMANDO UM MÉTODO DA CLASE fILHA QUE nÃO eXISTE
    • 3. Solução: Forçar que as classes que herdarem de A precisam criar o método fala
    • 2. Criando uma metaclasse
      • Criaremos uma metaclasse que herdará de type
        • mcs = metaclasse
        • name = nome da classe que está sendo criada
        • bases = as classes pai dessa c lasse que está sendo criada
        • namespace = todo atributo da classe e todo método que é criado na classe
    • 4. Impedir que alguém sobrescreva o atributo attr_classe da metaclasse
    • 5. Criar classes utilizando type()
  10. X. DocStrings

    • 1. Documentação de uma linha
      • uma_linha.py
      • main.py
        • import uma_linha.py
          • help(uma_linha)
          • help(uma_linha.funcao)
          • print(uma_linha.funcao.__doc__)
    • 2. DocString como string
      • Serve para a linha de código não ficar muito longa no pycharm
    • 3. Múltiplas Linhas
    • 4. Documentação De Função
    • 5. Documentação de Classe
  11. X1. DataClasses

    • Como criar uma classe incluindo __init__, __repr__, __eq__
        • __repr__ já foi configurado
        • __eq__ já foi configurado
    • Se eu precisar alterar o método __init__
    • Forçar tipo de atributo
    • Remover atributo do __repr__
  12. XII. Enum

    • Serve para evitar if muito longo
    • Sem
    • Com
      • Melhorado

Imagens e arquivos do mapa

  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO
  • Python - OO

Informações

Descrição
Linguagem de programção Python Mapa Mental sobre Python - OO, criado por Isaque Paulo em 05-01-2022.
Criado por
Isaque Paulo
Visualizações
8
Avaliação

Fale Conosco

Sobre o que é sua mensagem?

O que você acha do novo visual?

Você gostou?