我已经开发了一个供其他人使用的python框架。为了将任何数据打印到输出,开发人员应使用Log类(Log.print(...)),而不应直接使用print()方法。有什么方法可以在整个代码中强制执行此规则?例如,当开发人员像这样直接使用打印方法时抛出错误:
Error: print method cannot be called directly. Please use Log.print().
抑制打印(如here所述)不是一个好主意,因为开发人员可能会感到困惑。
答案 0 :(得分:1)
Actullay,下面两个行代码相同:
sys.stdout.write('hello'+'\n')
print('hello')
因此,您可以将sys.stdout重定向到一个在调用print时引发异常的类。
import sys
class BlockPrint():
call_print_exception = Exception('Error: print method cannot be called directly. Please use Log.print().')
def write(self, str):
raise self.call_print_exception
bp = BlockPrint()
sys.stdout=bp
print('aaa')
输出:
Traceback (most recent call last):
File "p.py", line 12, in <module>
print('aaa')
File "p.py", line 7, in write
raise self.call_print_exception
Exception: Error: print method cannot be called directly. Please use Log.print().