Python 不允许开发人员使用打印方法
我开发了一个其他人正在使用的python框架。为了将任何数据打印到输出中,开发人员应该使用日志类(Log.print(…),而不应该直接使用print()方法。有没有办法在整个代码中强制执行此规则?例如,当开发人员直接使用print方法时抛出一个错误,如下所示:Python 不允许开发人员使用打印方法,python,Python,我开发了一个其他人正在使用的python框架。为了将任何数据打印到输出中,开发人员应该使用日志类(Log.print(…),而不应该直接使用print()方法。有没有办法在整个代码中强制执行此规则?例如,当开发人员直接使用print方法时抛出一个错误,如下所示: 错误:无法直接调用print方法。请使用Log.print()。 抑制打印(如上所述)不是一个好主意,因为开发人员可能会感到困惑。实际上,下面两行代码是相同的: sys.stdout.write('hello'+'\n') print(
错误:无法直接调用print方法。请使用Log.print()。
抑制打印(如上所述)不是一个好主意,因为开发人员可能会感到困惑。实际上,下面两行代码是相同的:
sys.stdout.write('hello'+'\n')
print('hello')
因此,您可以将sys.stdout重定向到调用print时引发异常的类
导入系统
类BlockPrint():
调用\u print\u exception=exception('错误:无法直接调用print方法。请使用Log.print()
def写入(self,str):
引发self.call\u print\u异常
bp=区块打印()
sys.stdout=bp
打印('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().
回溯(最近一次呼叫最后一次):
文件“p.py”,第12行,在
打印('aaa')
写入文件“p.py”,第7行
引发self.call\u print\u异常
异常:错误:无法直接调用print方法。请使用Log.print()。
听起来你在担心一些不是你的问题的事情。确保Log.print()有很好的文档记录。如果您想强制开发人员以gievn方式进行开发,那么Python显然不是正确的语言(ADA可能是更好的选择)。Python的哲学是“我们都是同意的成年人”。因为Python甚至没有试图阻止您在运行时更改对象的类,所以我看不出您如何阻止任何人写入标准输出。IOW:尽可能清楚地记录为什么框架的用户应该使用Log.print()
而不是print()
,仅此而已。还要注意的是,Python作为一个完整的日志包在它的stdlib中。。。