import pickle class Animal(object): """ Classe que representa um animal. """ attrs = ['nome', 'especie', 'genero', 'peso', 'altura', 'idade'] def __init__(self, **args): # Crie os atributos no objeto a partir da lista # Os atributos tem None como valor default for attr in self.attrs: setattr(self, attr, args.get(attr, None)) def __repr__(self): dic_attrs = {} for attr in self.attrs: dic_attrs[attr] = getattr(self, attr) return 'Animal: %s' % str(dic_attrs) def salvar(self): """ Salva os dados do animal. """ dic_attrs = {} for attr in self.attrs: dic_attrs[attr] = getattr(self, attr) pickle.dump(dic_attrs, file('a.pkl', 'w')) def desfazer(self): """ Restaura os últimos dados salvos. """ attrs = pickle.load(file('a.pkl')) for attr in attrs: setattr(self, attr, attrs[attr]) # Teste gato = Animal(nome='Tinker', especie='Gato', genero='m', peso=6, altura=0.30, idade=4) gato.salvar() gato.idade = 5 print gato gato.desfazer() print gato # O módulo StringIO implementa uma classe # de strings que se comportam como arquivos import StringIO def table_format(dataset): """ Classe que representa um animal. """ out = StringIO.StringIO() out.write('') for row in dataset: out.write('') for col in row: out.write('' % col) out.write('') out.write('
%s
') out.seek(0) return out.read() import time import cherrypy class Root(object): """ Raiz do site. """ @cherrypy.expose def index(self): """ Exibe a saudação conforme o horário do sistema. """ # Lê a hora do sistema hour = '%02d:%02d' % time.localtime()[3:5] if '06:00' < hour <= '12:00': salute = 'Bom dia' elif '12:00' < hour <= '18:00': salute = 'Boa tarde' else: salute = 'Boa noite' # Retorna a mensagem para o browser return '%s, são %s.' % (salute, hour) cherrypy.quickstart(Root()) import traceback import cherrypy class Root(object): # Modelo para a página HTML template = '''
%s
''' @cherrypy.expose def index(self, exp=''): out = '' if exp: # Tente avaliar a expressão try: out = eval(exp) # Se der errado, mostre a mensagem do erro except: out = traceback.format_exc() return self.template % (exp, out) cherrypy.quickstart(Root())