【发布时间】:2014-07-29 07:51:43
【问题描述】:
我想自动为我的print 语句添加时间戳(在 Python 2.x 中)by overriding it。它可以工作,除非我导入一个也包含覆盖的模块。
我的主文件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()
帮助文件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")
运行 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'
我认为在导入testb 时,它的print 定义在某种程度上与testa 中的定义发生冲突,但这是我的想法达到极限的地方。
【问题讨论】:
标签: python python-2.7