21.12.2022 Views

python_para_desenvolvedores_2ed

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Decoradores de classe 139

Decoradores de classe

A partir da versão 2.6, os decoradores podem ser aplicados em classes.

Exemplo:

# -*- coding: latin1 -*-

import time

def logger(cls):

"""

Função decoradora de classes

"""

class Logged(cls):

"""

Classe derivada que mostra os parâmetros de inicialização

"""

def __init__(self, *args, **kargs):

print 'Hora:', time.asctime()

print 'Classe:', repr(cls)

print 'args:', args

print 'kargs:', kargs

# Executa a inicialização da classe antiga

cls.__init__(self, *args, **kargs)

# Retorna a nova classe

return Logged

@logger

class Musica(object):

def __init__(self, nome, artista, album):

self.nome = nome

self.artista = artista

self.album = album

m = Musica('Hand of Doom', 'Black Sabbath', album='Paranoid')

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!