I want to automatically add a timestamp to my print
statements (in Python 2.x) by overriding it. It works, except when I import a module which also contains the override.
My main file testa.py
:
from __future__ import print_function
import datetime
import testb
def print(*args, **kwargs):
__builtins__.print(datetime.datetime.now(), ' ', end='')
return __builtins__.print(*args, **kwargs)
print("from main file")
testb.MyClass()
The helper file testb.py
from __future__ import print_function
import datetime
def print(*args, **kwargs):
__builtins__.print(datetime.datetime.now(), ' ', end='')
return __builtins__.print(*args, **kwargs)
class MyClass():
def __init__(self):
print("from helper file")
When running testa:
2014-07-29 09:43:54.375000 from main file
Traceback (most recent call last):
File "C:/testa.py", line 10, in <module>
testb.MyClass()
File "C:\testb.py", line 15, in __init__
print("from helper file")
File "C:\testb.py", line 10, in print
__builtins__.print(datetime.datetime.now(), ' ', end='')
AttributeError: 'dict' object has no attribute 'print'
I think that when importing testb
, its print
definition somehow clashes with the one in testa
but this is where my thinking reaches its limits.