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

Python 不允许开发人员使用打印方法,python,Python,我开发了一个其他人正在使用的python框架。为了将任何数据打印到输出中,开发人员应该使用日志类(Log.print(…),而不应该直接使用print()方法。有没有办法在整个代码中强制执行此规则?例如,当开发人员直接使用print方法时抛出一个错误,如下所示: 错误:无法直接调用print方法。请使用Log.print()。 抑制打印(如上所述)不是一个好主意,因为开发人员可能会感到困惑。实际上,下面两行代码是相同的: sys.stdout.write('hello'+'\n') print(

我开发了一个其他人正在使用的python框架。为了将任何数据打印到输出中,开发人员应该使用日志类(Log.print(…),而不应该直接使用print()方法。有没有办法在整个代码中强制执行此规则?例如,当开发人员直接使用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中。。。