Minicurso de Python• Conceitos Básicos, Estruturas de  Dados e Orientação a objetos                             Nathan Sie...
O que é Python?• Python é uma linguagem de programação de altíssimo  nível (VHLPL – very high level programming  language)...
O que é Python?• A linguagem foi projetada com a filosofia de enfatizar  a importância do esforço do programador sobre o  ...
Quem usa Python?• Atualmente Python é uma das linguagens mais  utilizadas em grandes projetos no mundo.  Engenheiros de so...
Quem usa Python?• Grande parte da API do Google é desenvolvida em  Python;• O Google App Engine (framework web online mant...
Quem usa Python?• Empresas que patrocinam a Python Software  Foundation: ActiveState; ASTi; Array BioPharma,  Inc.; BizRat...
Por que usar Python?• Python é portável, você não precisa compilar seu  programa cada vez que muda de sistema operacional,...
Por que usar Python?• Python é simples e auto-descritiva, algumas  linguagens de programação têm sintaxe complexa ou  difí...
Resumo de características• Case sensitive;• Tipagem dinâmica;• Linguagem pura: 100% orientada a objetos;• Código auto-desc...
Sintaxe#comentário de uma #comentário de uma                          if x > y:                                           ...
Variáveis• O conceito de variável em Python é representado  sempre por um objeto. Na verdade, Python é uma  linguagem pura...
Operadores• Os operadores do Python:      Aritméticos               Comparação   Lógicos             +                    ...
Procedimentos e Funções• Procedimentos não           • Funções retornam  retornam valores              valoresdef procedim...
Procedimentos e Funções• Valores padrão (Default)• Se nenhum valor for passado como parâmetro, é  assumido o valor padrão ...
Exemplo 1VIII JOLIM - Maringá, 2012               15
Strings• A string em Python é representada pela classe str.  Toda string possui estado e comportamento provido  pela class...
Strings• Conheceremos agora alguns métodos para trabalhar  com strings:   o __len__(): Retorna o tamanho da string;   o ca...
Strings• Mais métodos:  o replace(antigo, novo): Retorna a mesma string com    o valor novo em todas as ocorrências de ant...
Exemplo 2• Criptografar uma string, substituindo todas as  ocorrências de um ou mais elementos por símbolos  especiais.• P...
Lendo e Escrevendo em                  Arquivos• Leitura de arquivos em Python é simples como em C!• Arquivos são objetos ...
Formas de Abrir um               Arquivo• Read: Abre o arquivo para leitura.• Write: Abre o arquivo para escrita. Cria uma...
Métodos para leitura• Read: Lê todo o arquivo e retorna uma única string;• Readline: Lê uma única linha do arquivo;• Readl...
Métodos para Escrita• Write: Escreve uma string no arquivo,  sequencialmente.• WriteLines: Escreve um array de string,  se...
Exemplo 3• 1 - Criar um arquivo para escrita e escrever nele;• 2 – Abrir o arquivo para leitura e verificar o  conteúdo ex...
Estruturas de Dados• Estruturas de dados englobam tipos compostos e  dados complexos;• As estruturas de dados mais famosas...
Estruturas de Dados: List• A list (lista) é uma das mais conhecidas estruturas de  dados.• Em Python, a lista tem estado e...
Estruturas de Dados: List• Veremos agora alguns métodos para trabalhar com  listas:   o append(elemento): adiciona element...
Exemplo 4• Trocar linhas por colunas de uma matriz quadrada.• Verificar se um número é primo. VIII JOLIM - Maringá, 2012  ...
Gerando Listas• Python possui formas de gerar listas, veremos duas;• Uma das primeiras funções que todos aprendem em  Pyth...
Gerando Listas                             lista1 = range(1500)                             lista2 = range(1001, 2000)Gera...
Gerando Listas• Há ainda uma forma “avançada” de gerar listas a  partir de outras listas;• Trata-se da técnica List Compre...
Exemplo 5• 1 – Criar um vetor B que não contenha as  ocorrências de um elemento em um vetor A     o A = [1,2,3,1,2,3,1,2,3...
Estruturas de Dados: Dict• Chamaremos dicts de dicionários, para facilitar a fala  em português;• Um dicionário é uma estr...
Estruturas de Dados: Dictdicionario = {} dicionario = {}dicionario["teste"] = "A palavra teste significa que estamos dicio...
Estruturas de Dados: Dict• Alguns métodos de manipulação de dicionários:   o get(indice): retorna o valor correspondente a...
Estruturas de Dados: Dictpessoas = {"Maria" : "Nome antigo", "Shyana" : "Nome complicado"} pessoas = {"Maria" : "Nome anti...
Utilização• Muito útil para arrays esparços.• Hashing.• Etc. VIII JOLIM - Maringá, 2012                37
Exemplo 6• Criar um dicionário com as pessoas Ana, Bruna,  Carolina atribuindo suas respectivas idades: 20, 19,  18 anos. ...
Recursão• Recursão é uma forma alternativa à tradicional  para desenvolver programas de computador.• Algumas versões recur...
Recursãodef funcaoRecursiva(variavel): def funcaoRecursiva(variavel):    if variavel == 10:     if variavel == 10:        ...
Exemplo 7• Calcular o fatorial de um número utilizando uma  função recursiva e também uma versão não  recursiva.• Comparar...
Desafio• Criar um registro (utilizando arquivo) que armazene  diversas pessoas (Nome e idade) para uma  pesquisa da univer...
Orientação a Objetos em            PythonVIII JOLIM - Maringá, 2012    43
Orientação a objetos• Python é uma linguagem 100% orientada a objetos,  significa que tudo em Python é um objeto!• Veremos...
Definindo Classes                                 class Veiculo(object):                                  class Veiculo(ob...
Definindo Atributos • Existem duas formas de definir atributos de instância   em Python;                               cla...
Definindo Atributos  class Veiculo(object):   class Veiculo(object):      marca = None       marca = None      ano = None ...
Atributos• Nem sempre queremos que os atributos sejam  acessados diretamente• Para isso podemos criar métodos Getters e Se...
Definindo métodos• Um método é um atributo com comportamento;• Para não fundir conceitos, vamos apenas trabalhar  com méto...
Herança de classesclass Atleta(Pessoa): class Atleta(Pessoa):    peso = None     peso = None    aposentado = None     apos...
Herança de classesclass Corredor(Atleta): class Corredor(Atleta):    def correr(self):     def correr(self):        print(...
Herança múltipla• Há uma peculiaridade no diagrama de classes: a classe  TriAtleta herda de três outras classes;• Muitas p...
Exemplo 8• Criar uma classe Estudante, com atributo curso.  Esta classe deve herdar da classe Pessoa os  atributos nome e ...
Exceções• Em Python, assim como em C++ e Java, o conceito de  Exceção está ligado à orientação a objetos.• Uma exceção é u...
Exceções• Primeiramente, vamos criar nossas exceções.• Uma exceção personalizada é modelada por uma  classe qualquer, que ...
Exceçõesdef alterarPeso(self, peso): def alterarPeso(self, peso):        if peso > 0 and peso < 400:         if peso > 0 a...
Exceções• Python levanta diversas exceções internamente:  ValueError, IOError, TypeError;• Vamos tratar exceções!• Para tr...
Exceçõesdef incrementar(numero): def incrementar(numero):    try:     try:         return numero+1          return numero+...
Referências• www.python.org• www.pythonbrasil.org• www.djangobrasil.org• www.plone.org• www.tchezope.org VIII JOLIM - Mari...
Próximos SlideShares
Carregando em…5
×

Minicurso Python - Apresentado no JOLIM 2012

584 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
584
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
40
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Minicurso Python - Apresentado no JOLIM 2012

  1. 1. Minicurso de Python• Conceitos Básicos, Estruturas de Dados e Orientação a objetos Nathan Siegle HartmannVIII JOLIM - Maringá, 2012 1
  2. 2. O que é Python?• Python é uma linguagem de programação de altíssimo nível (VHLPL – very high level programming language), interpretada, orientada a objetos e dinâmica criada por Guido van Rossum em 1991.• A linguagem tem um modelo de desenvolvimento aberto mantido pela PSF (Python Software Foundation). VIII JOLIM - Maringá, 2012 2
  3. 3. O que é Python?• A linguagem foi projetada com a filosofia de enfatizar a importância do esforço do programador sobre o esforço computacional;• Prioriza a legibilidade do código e a expressividade. VIII JOLIM - Maringá, 2012 3
  4. 4. Quem usa Python?• Atualmente Python é uma das linguagens mais utilizadas em grandes projetos no mundo. Engenheiros de software de empresas como Google afirmam que o uso de Python é essencial para o funcionamento de famosas ferramentas do Google. “C++ quando necessitamos, Python quando podemos”.• As ferramentas Google Doc, Picasa, Orkut Help, dentre outras da empresa americana Google utilizam a linguagem Python.VIII JOLIM - Maringá, 2012 4
  5. 5. Quem usa Python?• Grande parte da API do Google é desenvolvida em Python;• O Google App Engine (framework web online mantido pelo Google) oferece suporte total a Python e foi desenvolvido também em Python;• Zope, um dos melhores servidores de aplicação da atualidade foi desenvolvido em Python;• Linux tem diversar rotinas em Python. VIII JOLIM - Maringá, 2012 5
  6. 6. Quem usa Python?• Empresas que patrocinam a Python Software Foundation: ActiveState; ASTi; Array BioPharma, Inc.; BizRate.com; Canonical; CCP Games; cPacket Networks; EarnMyDegree.com; Enthought, Inc.; Google; HitFlip, Inc.; IronPort Systems; Madison Tyler LLC; Merfin LLC; Microsoft; OReilly & Associates, Inc.; Opsware, Inc.; Strakt Holdings, Inc.; Sun Microsystems; Tabblo; ZeOmega; Zope Corporation. VIII JOLIM - Maringá, 2012 6
  7. 7. Por que usar Python?• Python é portável, você não precisa compilar seu programa cada vez que muda de sistema operacional, basta apenas que exista um interpretador Python instalado.• Python é open-source com licença flexível, há uma comunidade que desenvolve a linguagem, que está sempre aprimorando-a e qualquer um de nós pode fazer parte dessa comunidade. A licença flexível nos permite desenvolver softwares proprietários com ferramentas livres. VIII JOLIM - Maringá, 2012 7
  8. 8. Por que usar Python?• Python é simples e auto-descritiva, algumas linguagens de programação têm sintaxe complexa ou difícil de memorizar. VIII JOLIM - Maringá, 2012 8
  9. 9. Resumo de características• Case sensitive;• Tipagem dinâmica;• Linguagem pura: 100% orientada a objetos;• Código auto-descritivo: simples e de fácil leitura;• Programação em alto-nível: não permite manipulação de ponteiros;• Não suporta sobrecarga de funções; VIII JOLIM - Maringá, 2012 9
  10. 10. Sintaxe#comentário de uma #comentário de uma if x > y: if x > y:linha linha big = x big = x small = y small = y“““comentário de um “““comentário de um else: else:bloco“““ bloco“““ big = y big = y small = x small = x‘‘‘comentário de um ‘‘‘comentário de umbloco‘‘‘ bloco‘‘‘ Simples e objetivo! Não é preciso saber programação para entender este código, basta um conhecimento básico em inglês! VIII JOLIM - Maringá, 2012 10
  11. 11. Variáveis• O conceito de variável em Python é representado sempre por um objeto. Na verdade, Python é uma linguagem pura, ou seja, tudo em Python é um objeto.• Toda variável é uma referência!• Variáveis armazenam endereços de memória e não valores! VIII JOLIM - Maringá, 2012 11
  12. 12. Operadores• Os operadores do Python: Aritméticos Comparação Lógicos + == and - != or * > not / < ** >= <= in isVIII JOLIM - Maringá, 2012 12
  13. 13. Procedimentos e Funções• Procedimentos não • Funções retornam retornam valores valoresdef procedimento(): def procedimento(): def hora(): def hora(): print “Hello World” print “Hello World” from datetime import datetime from datetime import datetime return datetime.now() return datetime.now()VIII JOLIM - Maringá, 2012 13
  14. 14. Procedimentos e Funções• Valores padrão (Default)• Se nenhum valor for passado como parâmetro, é assumido o valor padrão def teste(var = 1): def teste(var = 1): return var+1 return var+1VIII JOLIM - Maringá, 2012 14
  15. 15. Exemplo 1VIII JOLIM - Maringá, 2012 15
  16. 16. Strings• A string em Python é representada pela classe str. Toda string possui estado e comportamento provido pela classe str.• Podem ser representadas utilizando “ ou ‘.• Ex: “Meu nome é Nathan”.• Ex: ‘Meu nome é Nathan’.• Ex: “Meu nome é ‘Nathan’” VIII JOLIM - Maringá, 2012 16
  17. 17. Strings• Conheceremos agora alguns métodos para trabalhar com strings: o __len__(): Retorna o tamanho da string; o capitalize(): Retorna a mesma string com a primeira letra em maiúsculo. o upper(): Retorna a mesma string com todas as letras em maiúsculo. o lower(): Retorna a mesma string com todas as letras em minúsculo. VIII JOLIM - Maringá, 2012 17
  18. 18. Strings• Mais métodos: o replace(antigo, novo): Retorna a mesma string com o valor novo em todas as ocorrências de antigo. o split([separador]): Retorna uma lista de strings. Caso o separador não seja especificado, a lista será dividida por espaços em branco. VIII JOLIM - Maringá, 2012 18
  19. 19. Exemplo 2• Criptografar uma string, substituindo todas as ocorrências de um ou mais elementos por símbolos especiais.• Por exemplo: Substituir a ocorrência do símbolo “a” pelo símbolo “*”. VIII JOLIM - Maringá, 2012 19
  20. 20. Lendo e Escrevendo em Arquivos• Leitura de arquivos em Python é simples como em C!• Arquivos são objetos do tipo file;• Para a abertura de um arquivo, utilizamos a função open;• A função open funciona como uma fábrica de instâncias. VIII JOLIM - Maringá, 2012 20
  21. 21. Formas de Abrir um Arquivo• Read: Abre o arquivo para leitura.• Write: Abre o arquivo para escrita. Cria uma nova instância do arquivo a cada vez.• Append: Abre o arquivo para complementar. Cria um arquivo apenas se ele não existir• (Variantes). variável = open(file,mode) variável = open(file,mode) ... ... variável.close() variável.close() VIII JOLIM - Maringá, 2012 21
  22. 22. Métodos para leitura• Read: Lê todo o arquivo e retorna uma única string;• Readline: Lê uma única linha do arquivo;• Readlines: Lê todo o arquivo e retorna um array de linhas. VIII JOLIM - Maringá, 2012 22
  23. 23. Métodos para Escrita• Write: Escreve uma string no arquivo, sequencialmente.• WriteLines: Escreve um array de string, sequencialmente. VIII JOLIM - Maringá, 2012 23
  24. 24. Exemplo 3• 1 - Criar um arquivo para escrita e escrever nele;• 2 – Abrir o arquivo para leitura e verificar o conteúdo existente;• 3 – Complementar o arquivo utilizando o modo append. VIII JOLIM - Maringá, 2012 24
  25. 25. Estruturas de Dados• Estruturas de dados englobam tipos compostos e dados complexos;• As estruturas de dados mais famosas são vetores e matrizes. Dentre as mais avançadas, a mais conhecida é a lista.• Há ainda outras estruturas como árvore, pilha, fila, hash, etc.• Vale lembrar que uma string também é uma estrutura de dados!• Estudaremos três estruturas: List, Tuple e Dict. VIII JOLIM - Maringá, 2012 25
  26. 26. Estruturas de Dados: List• A list (lista) é uma das mais conhecidas estruturas de dados.• Em Python, a lista tem estado e comportamento que faz uma espécie de mistura entre o comportamento de vetores (acesso rápido por índices) e listas (“iterabilidade”); VIII JOLIM - Maringá, 2012 26
  27. 27. Estruturas de Dados: List• Veremos agora alguns métodos para trabalhar com listas: o append(elemento): adiciona elemento ao fim da lista. o count(elemento): retorna um inteiro contendo a quantidade de vezes que elemento aparece na lista. o reverse(): inverte a ordem dos elementos da lista. o remove(elemento): remove da lista o primeiro elemento encontrado. VIII JOLIM - Maringá, 2012 27
  28. 28. Exemplo 4• Trocar linhas por colunas de uma matriz quadrada.• Verificar se um número é primo. VIII JOLIM - Maringá, 2012 28
  29. 29. Gerando Listas• Python possui formas de gerar listas, veremos duas;• Uma das primeiras funções que todos aprendem em Python é a função range, que gera uma lista de inteiros; VIII JOLIM - Maringá, 2012 29
  30. 30. Gerando Listas lista1 = range(1500) lista2 = range(1001, 2000)Gera uma lista de 0 até1499. Gera uma lista de 1001 até 1999.VIII JOLIM - Maringá, 2012 30
  31. 31. Gerando Listas• Há ainda uma forma “avançada” de gerar listas a partir de outras listas;• Trata-se da técnica List Comprehension (Compreensão de Listas);• A sintaxe de List Comprehension vem da linguagem funcional Haskell;• O nome e a sintaxe originam da Matemática: Compreensão de listas tem sintaxe praticamente igual à notação axiomática de compreensão (Teoria de Conjuntos); VIII JOLIM - Maringá, 2012 31
  32. 32. Exemplo 5• 1 – Criar um vetor B que não contenha as ocorrências de um elemento em um vetor A o A = [1,2,3,1,2,3,1,2,3,4,5,6]• 2 - Criar um array que contenha todos os elementos múltiplos de 3, 5 e 9 (simultaneamente) entre 0 e 10.000. VIII JOLIM - Maringá, 2012 32
  33. 33. Estruturas de Dados: Dict• Chamaremos dicts de dicionários, para facilitar a fala em português;• Um dicionário é uma estrutura de dados onde cada nó é composto por uma chave e um valor;• Têm este nome pois são praticamente a mesma coisa que um dicionário! VIII JOLIM - Maringá, 2012 33
  34. 34. Estruturas de Dados: Dictdicionario = {} dicionario = {}dicionario["teste"] = "A palavra teste significa que estamos dicionario["teste"] = "A palavra teste significa que estamostestando" testando"dicionario["testado"] = "A palavra testado significa que algo jah dicionario["testado"] = "A palavra testado significa que algo jahpassou por um teste" passou por um teste"dicionario["testando"] = "A palavra testando significa que algo dicionario["testando"] = "A palavra testando significa que algoestah passando por um teste" estah passando por um teste"pessoas = {"Maria" : "Nome antigo", "Shyana" : "Nome complicado"} VIII JOLIM - Maringá, 2012 34
  35. 35. Estruturas de Dados: Dict• Alguns métodos de manipulação de dicionários: o get(indice): retorna o valor correspondente a indice. o items(): retorna uma lista de tuplas, no formato (índice, valor). o values(): retorna uma lista com todos os valores do dicionário. o keys(): retorna uma lista com todas as chaves do dicionário. o clear(): remove todos os itens do dicionário. VIII JOLIM - Maringá, 2012 35
  36. 36. Estruturas de Dados: Dictpessoas = {"Maria" : "Nome antigo", "Shyana" : "Nome complicado"} pessoas = {"Maria" : "Nome antigo", "Shyana" : "Nome complicado"}print(pessoas.get("Maria")) print(pessoas.get("Maria"))print(pessoas.items()) print(pessoas.items())print(pessoas.values()) print(pessoas.values())print(pessoas.keys()) print(pessoas.keys())pessoas.clear() pessoas.clear()print(pessoas) print(pessoas) VIII JOLIM - Maringá, 2012 36
  37. 37. Utilização• Muito útil para arrays esparços.• Hashing.• Etc. VIII JOLIM - Maringá, 2012 37
  38. 38. Exemplo 6• Criar um dicionário com as pessoas Ana, Bruna, Carolina atribuindo suas respectivas idades: 20, 19, 18 anos. VIII JOLIM - Maringá, 2012 38
  39. 39. Recursão• Recursão é uma forma alternativa à tradicional para desenvolver programas de computador.• Algumas versões recursivas são mais eficientes que imperativas e até mesmo mais simples de se implementar. VIII JOLIM - Maringá, 2012 39
  40. 40. Recursãodef funcaoRecursiva(variavel): def funcaoRecursiva(variavel): if variavel == 10: if variavel == 10: return variavel return variavel #caso base #caso base return variavel + funcaoRecursiva(variavel+1) return variavel + funcaoRecursiva(variavel+1) #chamada recursiva #chamada recursiva VIII JOLIM - Maringá, 2012 40
  41. 41. Exemplo 7• Calcular o fatorial de um número utilizando uma função recursiva e também uma versão não recursiva.• Comparar a complexidade de implementação. VIII JOLIM - Maringá, 2012 41
  42. 42. Desafio• Criar um registro (utilizando arquivo) que armazene diversas pessoas (Nome e idade) para uma pesquisa da universidade.• Crie uma função que leia o arquivo e apresente na tela os devidos dados. VIII JOLIM - Maringá, 2012 42
  43. 43. Orientação a Objetos em PythonVIII JOLIM - Maringá, 2012 43
  44. 44. Orientação a objetos• Python é uma linguagem 100% orientada a objetos, significa que tudo em Python é um objeto!• Veremos nos próximos slides como definir classes, atributos, métodos e como aplicar em Python diversos conceitos da Orientação a Objetos. VIII JOLIM - Maringá, 2012 44
  45. 45. Definindo Classes class Veiculo(object): class Veiculo(object): def __init(self,parametro): def __init(self,parametro): self.parametro = parametro self.parametro = parametroPalavra class tipicamente utilizada Método inicializador da classepara definir classes! (: VIII JOLIM - Maringá, 2012 45
  46. 46. Definindo Atributos • Existem duas formas de definir atributos de instância em Python; class Veiculo(object): class Veiculo(object): pass pass fusca = Veiculo() fusca = Veiculo() fusca.marca = "Volkswagen" fusca.marca = "Volkswagen" fusca.ano = 1972 fusca.ano = 1972class Veiculo(object): class Veiculo(object): marca = None marca = None ano = None ano = Nonegol = Veiculo() gol = Veiculo()gol.marca = "Volkswagen" gol.marca = "Volkswagen"gol.ano = 2008 gol.ano = 2008 VIII JOLIM - Maringá, 2012 46
  47. 47. Definindo Atributos class Veiculo(object): class Veiculo(object): marca = None marca = None ano = None ano = None gol = Veiculo() gol = Veiculo() gol.marca = "Volkswagen" gol.marca = "Volkswagen" gol.ano = 2008 gol.ano = 2008 gol.bazinga = True gol.bazinga = TrueVIII JOLIM - Maringá, 2012 47
  48. 48. Atributos• Nem sempre queremos que os atributos sejam acessados diretamente• Para isso podemos criar métodos Getters e Setters Pessoa.getNome() Pessoa.getNome() Pessoa.setNome(nome) Pessoa.setNome(nome)• Ainda podemos tornar os atributos privados Pessoa.__nome = “nome” Pessoa.__nome = “nome” Pessoa.__idade = idade Pessoa.__idade = idade VIII JOLIM - Maringá, 2012 48
  49. 49. Definindo métodos• Um método é um atributo com comportamento;• Para não fundir conceitos, vamos apenas trabalhar com métodos da forma tradicional, ou quase isso;• Para definir métodos e funções em Python utilizamos a palavra reservada def;• Def __init__(self,atr1,atr2)• Def getNome(self): return self.__nome VIII JOLIM - Maringá, 2012 49
  50. 50. Herança de classesclass Atleta(Pessoa): class Atleta(Pessoa): peso = None peso = None aposentado = None aposentado = None def __init__(self, nome, idade, peso): def __init__(self, nome, idade, peso): super(Atleta, self).__init__(nome, idade) super(Atleta, self).__init__(nome, idade) self.peso = peso self.peso = peso self.aposentado = False self.aposentado = False def aquecer(self): def aquecer(self): print("Atleta aquecido!") print("Atleta aquecido!") def aposentar(self): def aposentar(self): self.aposentado = True self.aposentado = TrueVIII JOLIM - Maringá, 2012 50
  51. 51. Herança de classesclass Corredor(Atleta): class Corredor(Atleta): def correr(self): def correr(self): print("Corredor correndo!") print("Corredor correndo!") class Nadador(Atleta): class Nadador(Atleta): def nadar(self): def nadar(self): print("Nadador nadando!") print("Nadador nadando!") class Ciclista(Atleta): class Ciclista(Atleta): def pedalar(self): def pedalar(self): print("Ciclista pedalando!") print("Ciclista pedalando!") VIII JOLIM - Maringá, 2012 51
  52. 52. Herança múltipla• Há uma peculiaridade no diagrama de classes: a classe TriAtleta herda de três outras classes;• Muitas pessoas podem pensar: mas isso é impossível!• Em Python, assim como em C++, isso é possível sim! Logo, a classe TriAtleta fica bem simples: class TriAtleta(Ciclista, Nadador, Corredor): class TriAtleta(Ciclista, Nadador, Corredor): pass pass VIII JOLIM - Maringá, 2012 52
  53. 53. Exemplo 8• Criar uma classe Estudante, com atributo curso. Esta classe deve herdar da classe Pessoa os atributos nome e idade.• Uma pessoa tem um carro. Criar uma classe Carro e fazer que uma pessoa tenha um atributo do tipo Carro.VIII JOLIM - Maringá, 2012 53
  54. 54. Exceções• Em Python, assim como em C++ e Java, o conceito de Exceção está ligado à orientação a objetos.• Uma exceção é um objeto, possui estado e comportamento.• O tratamento de exceções pode ser utilizado para aumentar o nível de abstração do código.• É possível usar exceções também para encapsular dados específicos sobre o erro levantado.• Vamos aprender como criar, tratar e levantar uma exceção em Python! VIII JOLIM - Maringá, 2012 54
  55. 55. Exceções• Primeiramente, vamos criar nossas exceções.• Uma exceção personalizada é modelada por uma classe qualquer, que herda da classe BaseException;• Nas versões anteriores de Python qualquer classe podia modelar uma exceção. Isso gerava a má prática de lançar exceções modeladas pela classe string; VIII JOLIM - Maringá, 2012 55
  56. 56. Exceçõesdef alterarPeso(self, peso): def alterarPeso(self, peso): if peso > 0 and peso < 400: if peso > 0 and peso < 400: self.__peso = peso self.__peso = peso else: else: raise Exception("%f nao eh um peso valido!", %(peso)) raise Exception("%f nao eh um peso valido!", %(peso)) VIII JOLIM - Maringá, 2012 56
  57. 57. Exceções• Python levanta diversas exceções internamente: ValueError, IOError, TypeError;• Vamos tratar exceções!• Para tratar exceções em Python utilizamos try… except… else… finally; VIII JOLIM - Maringá, 2012 57
  58. 58. Exceçõesdef incrementar(numero): def incrementar(numero): try: try: return numero+1 return numero+1 except: except: raise Exception(“É necessário um número para somar”) raise Exception(“É necessário um número para somar”)def incrementar(numero): def incrementar(numero): try: try: return numero+1 return numero+1 except TypeError: except TypeError: return int(numero)+1 return int(numero)+1VIII JOLIM - Maringá, 2012 58
  59. 59. Referências• www.python.org• www.pythonbrasil.org• www.djangobrasil.org• www.plone.org• www.tchezope.org VIII JOLIM - Maringá, 2012 59

×