Академический Документы
Профессиональный Документы
Культура Документы
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
Resumo
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 2 / 37
1 Classes
3 Referências
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 2 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 3 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 4 / 37
Classes: Sintaxe
ATRIBUTOS_DE_CLASSE
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 5 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 6 / 37
Classes “new-style”
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 7 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 8 / 37
Classes: Exemplo Básico
import datetime
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 9 / 37
Classes: Exemplo Avançado
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 10 / 37
Classes: Exemplo Avançado (Continuação)
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 11 / 37
Classes: Exemplo Avançado (Diagrama)
Wireless
USBWireless PCIEthernet
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 12 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 13 / 37
Atributos de Classe
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 14 / 37
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 ]
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 15 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 16 / 37
Resolução de Atributos
1 Instancia 1 Instancia
2 Classe 2 Classe
3 Classe Pai 1 5 Classe Pai 2 ... n Classe Pai N 3 Classe Pai 1 4 Classe Pai 2 ... x Classe Pai N
4 Classe Pai Pai 1 6 Classe Pai Pai 2 y Classe Pai Pai 1 z Classe Pai Pai 2
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 17 / 37
Resolução de Atributos: Herança em Diamante
Classes "old-style" Classes "new-style"
3 A 4 A
+metodo() +metodo()
2 B C 2 B 3 C
+metodo() +metodo()
1
1 D D
d = D() d = D()
d.metodo() d.metodo()
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 19 / 37
Métodos Estáticos
São métodos que não precisam de uma instância ou classe para serem
chamados, parece com o conceito de métodos estáticos 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 ’
Atenção
A linha essencial é: f = staticmethod( f ), ela redefine o método
previamente declarado como um método estático.
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 20 / 37
Métodos de Classe
Atenção
A linha essencial é: f = classmethod( f ), ela redefine o método previamente
declarado como um método da classe, ao invés de método da instância.
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 21 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 22 / 37
Atributos Públicos e Privados
c = C ()
print c . _C _ _ p r i v a d o _ c l as s e
print c . _ C _ _ p r i v a d o _ i n s t a n c i a
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 23 / 37
Propriedades: Acesso de Escrita, Leitura dos Atributos
“new-style classes” provê o conceito de propriedade, o qual pode ter
os acessos de escrita e leitura controlados por métodos:
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 r e c i s a s e r i n t e i r o
print c . x
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 24 / 37
Propriedades: Exemplo mais real
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 25 / 37
Propriedades: Exemplo mais real (2)
def g e r a _ p r o p r i e d a d e _ s t r ( nome , tam_max ):
def valida ( valor ):
return len ( valor ) <= tam_max
# valida ()
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 26 / 37
Propriedades: Exemplo mais real (3)
p = Pessoa ()
p . nome = 10 # TypeError
p . nome = " Este texto tem mais de 20 letras " # ValueError
p . idade = " 200 " # TypeError
p . idade = 200 # ValueError
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 27 / 37
CONTINUE CLASSES!!!
continue-me!!!!
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 28 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 29 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 30 / 37
Lendo um Arquivo
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 31 / 37
Lendo um Arquivo (2)
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 32 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 33 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 34 / 37
Referências utilizadas nesta aula
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 35 / 37
Panorama
1 Classes
Sintaxe
Classes “new-style”
Exemplos
Atributos de Classe
Resolução de Atributos
Métodos Estáticos e de Classe
Proteção de Atributos
3 Referências
Referências utilizadas nesta aula
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 36 / 37
Contato
Gustavo Sverzut Barbieri (GPSL - UNICAMP) Curso de Python em 5 Horas 12 de maio de 2005 37 / 37