[Python] Overloading "print"
Vittorio Spina
vittorio.spina a gmail.com
Mar 4 Giu 2013 17:08:18 CEST
Il 04/06/2013 17:03, Federico Figus ha scritto:
> 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.
ho pensato a fare un overloading perchč non e' semplice cambiare tutti i
print con un find&replace.
la riga
print "ciao mondo"
dovrebbe diventare
print_log("ciao mondo")
e l'ultima parentesi tonda chiusa non saprei proprio come inserirla...
Con il file-like object del print ha funzionato, adesso ho un flag che
funziona cosė:
if not flag:
print "Verbose is OFF!!!"
from overloadprint import *
sys.stdout=OverloadPrint()
dove overloading.py contiene il codice:
class OverloadPrint():
def write(self, text):
pass
>
> Saluti,
> Federico F.
>
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
-------------- parte successiva --------------
Un allegato HTML č stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130604/d22eeec1/attachment-0001.html>
Maggiori informazioni sulla lista
Python