Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP)...

38
Curso de Python em 5 Horas Classes e Trabalhando com Arquivo Gustavo Sverzut Barbieri GPSL - UNICAMP 12 de maio de 2005 Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 1 / 37

Transcript of Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP)...

Page 1: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Curso de Python em 5 HorasClasses e Trabalhando com Arquivo

Gustavo Sverzut Barbieri

GPSL - UNICAMP

12 de maio de 2005

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 1 / 37

Page 2: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Resumo

Esta aula apresenta o uso de classes e tambem como trabalhar comarquivos e entrada e saıda em geral.

O material de apoio a ser utilizado se encontra em:

Python para ja programadores: http://www.gustavobarbieri.com.br/python/aulas_python/aula-01.pdf

Resumo: http://www.gustavobarbieri.com.br/python/aulas_python/resumo.pdf

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 2 / 37

Page 3: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

1 Classes

2 Trabalhando com Arquivos

3 Referencias

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 2 / 37

Page 4: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 3 / 37

Page 5: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 4 / 37

Page 6: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Classes: Sintaxe

class NOME_DA_CLASSE ( CLASSE_PAI_1 , CLASSE_PAI_2 ):

"""Documentacao da classe.

"""

ATRIBUTOS_DE_CLASSE

def __init__ ( self , PARAMETROS ):

CODIGO_DO_CONSTRUTOR

def METODO ( self , PARAMETROS ):

CODIGO_DO_METODO

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 5 / 37

Page 7: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37

Page 8: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Classes “new-style”

Desde a unificacao dos tipos na versao 2.2 do Python, todos asclasses devem herdar de object e sao chamadas de “new-style-classes”.

Por compatibilidade, ainda pode-se criar classes a moda antiga(classicas).

Porem classes classicas nao se beneficiam dos recursos providos:I Sem super()

I Heranca multipla e precaria, sem obj.__mro__

I Sem conceito de propriedades: property()

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 7 / 37

Page 9: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 8 / 37

Page 10: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Classes: Exemplo Basico

import datetime

class Pessoa ( object ):

def __init__ ( self , nome , nascimento ):

self.nome = nome

self.nascimento = nascimento

def idade ( self ):

delta = datetime.date.today () - self.nascimento

return delta.days / 365

def __str__ ( self ):

return ’%s, %d anos’ % ( self.nome , self.idade () )

gustavo = Pessoa ( ’Gustavo Sverzut Barbieri ’,

datetime.date ( 1982 , 6 , 19 ) )

print gustavo.idade ()

print gustavo

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 9 / 37

Page 11: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Classes: Exemplo Avancado

class Ethernet ( object ):

def __init__ ( self , name , mac_address ):

self.name

self.mac_address

class Wireless ( Ethernet ):

def __init__ ( self , name , mac_address ):

Ethernet.__init__ ( self , name , mac_address )

class PCI( object ):

def __init__ ( self , bus , vendor ):

self.bus = bus

self.vendor = vendor

class USB( object ):

def __init__ ( self , device ):

self.device = device

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 10 / 37

Page 12: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Classes: Exemplo Avancado (Continuacao)

class PCIEthernet ( PCI , Ethernet ):

def __init__ ( self , bus , vendor , name , mac_address ):

PCI.__init__ ( self , bus , vendor )

Ethernet.__init__ ( self , name , mac_address )

class USBWireless ( USB , Wireless ):

def __init__ ( self , device , name , mac_address ):

USB.__init__ ( self , device )

Wireless.__init__ ( self , name , mac_address )

wlan0 = USBWireless ( ’usb0’, ’wlan0 ’, ’00:33:44:55:66 ’ )

eth0 = PCIEthernet ( ’pci :0:0:1 ’, ’realtek ’,

’eth0’, ’00:11:22:33:44 ’ )

print isinstance ( wlan0 , Ethernet ) # Trueprint isinstance ( eth0 , PCI ) # Trueprint isinstance ( eth0 , USB ) # False

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 11 / 37

Page 13: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Classes: Exemplo Avancado (Diagrama)

Ethernet+name

+mac_address

Wireless

PCI+bus

+vendor

USB+device

PCIEthernetUSBWireless

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 12 / 37

Page 14: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 13 / 37

Page 15: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Atributos de Classe

Sao atributos que estao na classe, nao na instancia

Sao compartilhados entre todas as instancias (economia de memoria)

Os valores sao instanciados/atribuıdos ao ler a definicao de classe

Uteis para casos como Jogos, onde uma imagem deve sercompartilhada por todos os personagens identicos, economizandomemoria

Uteis para fazer “lock” em regioes crıticas, evitar condicoes decorrida, etc...

Perigoso para programadores descuidados!

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 14 / 37

Page 16: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Atributos de Classe: Exemplos

class C( object ):

l = []

c1 = C()

c2 = C()

c1.l.append ( 1 )

print c1.l # imprime [ 1 ]print c2.l # imprime [ 1 ]print C.l # imprime [ 1 ]

c2.l.append ( 2 )

print c1.l # imprime [ 1 , 2 ]print c2.l # imprime [ 1 , 2 ]print C.l # imprime [ 1 , 2 ]

C.l.append ( 3 )

print c1.l # imprime [ 1 , 2 , 3 ]print c2.l # imprime [ 1 , 2 , 3 ]print C.l # imprime [ 1 , 2 , 3 ]

Veja o proximo slide, sobre resolucao de atributos para entender melhor.

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 15 / 37

Page 17: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 16 / 37

Page 18: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Resolucao de Atributos

Classe

Instancia

Classe Pai 1 Classe Pai 2 Classe Pai N...

1

2

3 n

Classe Pai Pai 14

5

Classe Pai Pai 26

Classe

Instancia

Classe Pai 1 Classe Pai 2 Classe Pai N...

1

2

3

y Classe Pai Pai 1

4 x

Classe Pai Pai 2z

Classes "old-style" Classes "new-style"

Em objetos de “old-style classes” a pesquisa e recursiva.

Em objetos de “new-style classes” a pesquisa segue uma ordem maislogica, que pode ser vista em obj.__mro__.

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 17 / 37

Page 19: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Resolucao de Atributos: Heranca em Diamante

A+metodo()

B C+metodo()

D

A+metodo()

B C+metodo()

D

Classes "old-style" Classes "new-style"

11

2

3

d = D()

d.metodo()

d = D()

d.metodo()

2 3

4

Old-Style: Chama A.metodo(), o que e um problema, sendo que asfuncionalidades de C devem depender de C.metodo().

New-Style: Chama C.metodo(), o que e o esperado.

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 18 / 37

Page 20: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 19 / 37

Page 21: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Metodos Estaticos

Sao metodos que nao precisam de uma instancia ou classe para seremchamados, parece com o conceito de metodos estaticos em C++ e Java.Exemplo:

class C( object ):

def f():

print ’metodo estatico ’

f = staticmethod ( f )

C.f() # imprime ’ metodo e s t a t i c o ’c = C()

c.f() # imprime ’ metodo e s t a t i c o ’

Atencao

A linha essencial e: f = staticmethod( f ), ela redefine o metodopreviamente declarado como um metodo estatico.

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 20 / 37

Page 22: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Metodos de Classe

Sao metodos que sao chamados sobre a classe, ao inves da instancia.Exemplo:

class C( object ):

def f( classe ):

print ’metodo da classe:’, classe

f = classmethod ( f )

C.f() # imprime ’ metodo da c l a s s e : < c l a s s ’ main .C’> ’c = C()

c.f() # imprime ’ metodo da c l a s s e : < c l a s s ’ main .C’> ’

Atencao

A linha essencial e: f = classmethod( f ), ela redefine o metodo previamentedeclarado como um metodo da classe, ao inves de metodo da instancia.

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 21 / 37

Page 23: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 22 / 37

Page 24: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Atributos Publicos e Privados

Nomenclatura define atributos/metodos publicos e privadosI Privados: nomes que se iniciam com __ e nao terminam com __.I Publicos: os outros nomes possıveis.I Convenciona-se que atributos/metodos que se iniciam e terminam com

__ (portanto publicos) sao de uso interno da classe, apesar de poderemser utilizados pelo mundo externo.

A protecao e feita por mistura de nomes e pode ser “burlada”(flexibilidade para o programador):

class C( object ):

__privado_classe = 1

def __init__ ( self ):

self.__privado_instancia = 2

c = C()

print c._C__privado_classe

print c._C__privado_instancia

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 23 / 37

Page 25: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Propriedades: Acesso de Escrita, Leitura dos Atributos

“new-style classes” prove o conceito de propriedade, o qual pode teros acessos de escrita e leitura controlados por metodos:

class C( object ):

def __init__ ( self ):

self.__x = None

def getX( self ):

print ’getX()’

return self.__x

def setX( self , valor ):

print ’setX(’, valor , ’)’

if isinstance ( valor , int ):

self.__x = valor

else:

raise TypeError ( ’x precisa ser inteiro!’ )

x = property ( getX , setX )

c = C()

c.x = 1

c.x = ’abc’ # TypeError : x p rec i sa ser i n t e i r oprint c.x

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 24 / 37

Page 26: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Propriedades: Exemplo mais real

def gera_propriedade_tipo ( nome , tipo , valida , errmsg ):

attr = ’__%s’ % nome

def get( self ):

return getattr ( self , attr )

# get ()

def set( self , valor ):

if isinstance ( valor , tipo ):

if valida ( valor ):

setattr ( self , attr , valor )

else:

raise ValueError ( errmsg )

else:

raise TypeError ( errmsg )

# se t ()

return property ( get , set )

# gera p rop r i edade t i po ()

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 25 / 37

Page 27: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Propriedades: Exemplo mais real (2)

def gera_propriedade_str ( nome , tam_max ):

def valida ( valor ):

return len( valor ) <= tam_max

# va l i d a ()

msg = ( ’%s precisa ser "str" e ter ’ \

’menos que %s letras ’ ) % ( nome , tam_max )

return gera_propriedade_tipo ( nome , str , valida , msg )

# gera p rop r i e dade s t r ( )

def gera_propriedade_int ( nome , min , max ):

def valida ( valor ):

return min <= valor <= max

# va l i d a ()

msg = ’%s precisa ser "int" entre %s e %s’ % \

( nome , min , max )

return gera_propriedade_tipo ( nome , int , valida , msg )

# gera p rop r i e dade s t r ( )

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 26 / 37

Page 28: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Propriedades: Exemplo mais real (3)

class Pessoa ( object ):

nome = gera_propriedade_str ( "nome" , 20 )

rg = gera_propriedade_str ( "rg" , 9 )

idade = gera_propriedade_int ( "idade" , 1 , 150 )

p = Pessoa ()

p.nome = 10 # TypeErrorp.nome = "Este texto tem mais de 20 letras" # ValueErrorp.idade = "200" # TypeErrorp.idade = 200 # ValueError

p.nome = "Gustavo" # Ok!p.idade = 22

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 27 / 37

Page 29: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

CONTINUE CLASSES!!!

continue-me!!!!

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 28 / 37

Page 30: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 29 / 37

Page 31: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 30 / 37

Page 32: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Lendo um Arquivo

Lendo todo o conteudo para a memoria:

arquivo = open( ’nome_arq.txt’ )

conteudo = arquivo.read()

arquivo.close ()

Lendo todas as linhas para a memoria (lista):

arquivo = open( ’nome_arq.txt’ )

linhas = arquivo.readlines ()

arquivo.close ()

Lendo uma quantidade especıfica de bytes:

arquivo = open( ’nome_arq.txt’ )

comeco = arquivo.read ( 20 ) # 20 primeiros by t e sarquivo.close ()

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 31 / 37

Page 33: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Lendo um Arquivo (2)

Lendo com lacos:

arquivo = open( ’nome_arq.txt’ )

for linha in arquivo : # iden t i c o a arquivo . r e ad l i n e s ()print linha ,

arquivo = open( ’nome_arq.txt’ )

while True:

linha = arquivo.readline ()

if linha == ’’:

break

print linha ,

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 32 / 37

Page 34: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 33 / 37

Page 35: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 34 / 37

Page 36: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Referencias utilizadas nesta aula

Python Tutorial http://docs.python.org/tut/tut.html

Python Library Reference http://docs.python.org/lib/lib.html

Python Language Referencehttp://docs.python.org/ref/ref.html

Python para ja Programadores http://www.gustavobarbieri.com.br/python/aulas_python/aula-01.pdf

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 35 / 37

Page 37: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Panorama

1 ClassesSintaxeClasses “new-style”ExemplosAtributos de ClasseResolucao de AtributosMetodos Estaticos e de ClasseProtecao de Atributos

2 Trabalhando com ArquivosLeitura

3 ReferenciasReferencias utilizadas nesta aulaContato

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 36 / 37

Page 38: Curso de Python em 5 Horas - Gustavo Sverzut Barbieri · Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37 Classes “new-style” Desde

Contato

Gustavo Sverzut Barbieri

Email: [email protected]: http://www.gustavobarbieri.com.br

ICQ: 17249123MSN: [email protected]

Jabber: [email protected]

Obtenha esta palestra em:http://palestras.gustavobarbieri.com.br/python-5hs/

Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 37 / 37