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.

Metaclasses 135

# Se __instance não existir, então crie...

except AttributeError:

# A função super() pesquisa na MRO

# a partir de Singleton

cls.__instance = super(Singleton,

cls).__call__(*args, **kwargs)

return cls.__instance

import MySQLdb

class Con(object):

"""

Classe de conexão única

"""

# Define a metaclasse desta classe

__metaclass__ = Singleton

def __init__(self):

# Cria uma conexão e um cursor

con = MySQLdb.connect(user='root')

self.db = con.cursor()

# Sempre será usado o mesmo

# objeto de cursor

class Log(object):

"""

Classe de log

"""

# Define a metaclasse desta classe

__metaclass__ = Singleton

def __init__(self):

# Abre o arquivo de log para escrita

self.log = file('msg.log', 'w')

# Sempre será usado o mesmo

# objeto de arquivo

def write(self, msg):

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

Saved successfully!

Ooh no, something went wrong!