21.12.2022 Views

python_para_desenvolvedores_2ed

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

136 Metaclasses

print msg

# Acrescenta as mensagens no arquivo

self.log.write(str(msg) + '\n')

# Conexão 1

con1 = Con()

Log().write('con1 id = %d' % id(con1))

con1.db.execute('show processlist')

Log().write(con1.db.fetchall())

# Conexão 2

con2 = Con()

Log().write('con2 id = %d' % id(con2))

con2.db.execute('show processlist')

Log().write(con2.db.fetchall())

import copy

# Conexão 3

con3 = copy.copy(con1)

Log().write('con3 id = %d' % id(con3))

con3.db.execute('show processlist')

Log().write(con2.db.fetchall())

Saída e conteúdo do arquivo “msg.log”:

con1 id = 10321264

((20L, 'root', 'localhost:1125', None, 'Query', 0L, None, 'show processlist'),)

con2 id = 10321264

((20L, 'root', 'localhost:1125', None, 'Query', 0L, None, 'show processlist'),)

con3 id = 10321264

((20L, 'root', 'localhost:1125', None, 'Query', 0L, None, 'show processlist'),)

Com isso, todas as referências apontam para o mesmo objeto, e o recurso (a

conexão de banco de dados) é reaproveitado.

Classes base abstratas

A partir da versão 2.6, o Python passou a suportar Abstract Base Classes, que

são metaclasses que permitem forçar a implementação de determinados

métodos e atributos das classes e subclasses derivadas.

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

Saved successfully!

Ooh no, something went wrong!