class Logger(object):
	def __init__(self, colour):
		self.colour = colour
	
	def log(self, msg):
		print(self.colour + ": " + msg)


def logger_choice(colour):
	def col_decor(f):
		def f_decor(*args, **kwargs):
			global dprint
			prev_dprint = dprint
			dprint = loggers[colour].log
			f(*args, **kwargs)
			dprint = prev_dprint
		return f_decor
	return col_decor

def f():
	dprint("this should be black")

@logger_choice(colour='yellow')
def fu(x):
	dprint("this should be yellow, and 5 = %d" % x)

@logger_choice(colour='red')
def fun():
	dprint("this should be red")


loggers = {'black': Logger("black"), 'yellow': Logger("yellow"), 'red': Logger("red")}
dprint = loggers['black'].log

f()
fu(5)
fun()