[Python] Overloading "print"

Federico Figus figus.federico a gmail.com
Mar 4 Giu 2013 17:03:46 CEST


Ciao,

l'override dell'istruzione print non è possibile in python 2.x, ma lo è in
python 3.x.
Per aggirare il problema potresti definire un file-like object che possieda
almeno il metodo write, al cui interno ci implementi la logica di scritura,
ad esempio:

import sys
_stdout = sys.stdout

class FaskeStdout(object):

can_write = 1

def write(self, data):
if self.can_write:
_stdout.write(data)

sys.stdout = FakeStdout()

print "stampa sullo stdout"
sys.stdout.can_write = 0
print "non stampa sullo stdout"

La seconda soluzione sarebbe creare la tua funzione print con un alias
(e.g. print_log()) e modidicare tutto il codice con un semplice
find&replace, così potrai controllare la meglio tutta questa parte in
futuro.

Saluti,
Federico F.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130604/6e1b6d07/attachment.html>


Maggiori informazioni sulla lista Python