Python l03
Python l03
• Classes
• Métodos
• Construtores e destrutores
• Atributos
• Herança
• Propriedades
• Classes abertas
• Sobrecarga de operadores
Classes
Objeto
Atributos de
Classe classe
Atributos de
Métodos de
classe
Objeto = Classe() classe
Métodos de
classe Métodos
estáticos
Métodos
estáticos Métodos
dinâmicos
Atributos de
O construtor é executado neste
momento. objeto
Classes (herança simples)
Classe Antiga
Atributos Métodos
class Nova(Antiga):
Classe Nova
Atributos Métodos
antigos antigos
Atributos Métodos
redefinidos redefinidos
Atributos Métodos
novos novos
Classes (herança múltipla)
3 Terrestre Aquático 4
1 Carro Barco 2
Herança (múltipla)
class Classe(supcl1, supcl2):
"""Isto é uma classe"""
Isto é atributo de classe.
clsvar = []
Isto é um método especial.
def __init__(self, args):
"""Construtor da classe"""
<codigo>
Isto é um método especial.
def __done__(self):
"""Destrutor da classe"""
<codigo>
Isto é um decorador.
@classmethod
"""Método de classe"""
def cls_metodo(cls, params):
<codigo>
@staticmethod
"""Método estático"""
def est_metodo(params):
<codigo>
Novo objeto do tipo Classe.
obj = Classe()
[Link]()
Métodos de classe e estáticos
Classe.cls_metodo() podem ser chamados
Classe.est_metodo() diretamente.
Classes (exemplo)
print Cell('123**2')
Novo objeto do tipo Cell.
print Cell('23*2+2')
print Cell('abs(-1.45 / 0.3)', '%2.3f')
15129
48
4.833
Herança (exemplo)
class Pendrive(object):
def __init__(self, size, usb='2.0'):
[Link] = size
[Link] = usb Esta é a classe base.
class MP3Player(Pendrive):
def __init__(self, size, usb='2.0', turner=False):
[Link] = turner
Pendrive.__init__(self, size, usb)
class Projetil(object):
def __init__(self, alcance, tempo):
[Link] = alcance
[Link] = tempo
def get_velocidade(self):
return [Link] / [Link]
# Property de leitura
class Projetil(object):
def __init__(self, alcance, tempo):
[Link] = alcance
[Link] = tempo O decorador transforma o
método em uma propriedade da
@property classe.
def velocidade(self):
return [Link] / [Link]
class Projetil(object):
def __init__(self, alcance, tempo):
[Link] = alcance
[Link] = tempo
def getv(self):
Calcula a velocidade.
return [Link] / [Link]
def setv(self, v): Recalcula o tempo.
[Link] = [Link] / v
velocidade = property(getv, setv)
User.set_password = set_password
Utilizando o operador.
"The Lamb Lies Down On Broadway" - "Down " =
"The Lamb Lies On Broadway"
Exercícios