不允许开发人员使用打印方法

时间:2020-03-26 08:05:56

标签: python

我已经开发了一个供其他人使用的python框架。为了将任何数据打印到输出,开发人员应使用Log类(Log.print(...)),而不应直接使用print()方法。有什么方法可以在整个代码中强制执行此规则?例如,当开发人员像这样直接使用打印方法时抛出错误:

Error: print method cannot be called directly. Please use Log.print().

抑制打印(如here所述)不是一个好主意,因为开发人员可能会感到困惑。

1 个答案:

答案 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().