gpt4 book ai didi

python - 将 shlex 置于 Debug模式

转载 作者:太空狗 更新时间:2023-10-29 21:56:52 30 4
gpt4 key购买 nike

我想看看 shlex对于我正在尝试构建的东西来说是一个不错的选择,所以我想我会把它放在 debug mode 中玩弄它。只有 shlex 的构造函数有这个 weird thing it does : 它将 self.debug 设置为 0 然后立即检查它是否为真。


self.debug = 0
self.token = ''
self.filestack = deque()
self.source = None
if self.debug:
print 'shlex: reading from %s, line %d' \
% (self.instream, self.lineno)

我知道 Python 有一些强大的元编程功能,但我无法弄清楚它是如何工作的——即使我重写了构造函数,也没有编程方式来介于值的设置和它的使用之间。

是否应该有一种方法可以在 if self.debug 条件下输出语句(如果是,如何?),这是一个错误,还是我还没有第三种可能性不考虑吗?

最佳答案

首先,我很确定你已经发现了一个错误,你应该 go report it . (你应该确保它仍然存在于 the latest 3.x code 中,但我刚刚检查过,它是。)我没有看到任何关于 shlex 对象不允许你设置 debug 的不合理之处=1 直到它们被初始化......但在那种情况下,它们不应该在初始化程序中检查 self.debug,因为它无法被设置。

但这并不是一个很难解决的错误。您唯一会以这种方式丢失的是第一条消息,它只打印出您可以自己打印的公共(public)属性。所以,例如:

class debugging_shlex(shlex):
def __init__(self, *args, **kwargs):
# shlex is an old-style class in 2.7, so no super
shlex.__init__(self, *args, **kwargs)
self.debug = 1
print('shlex: reading from %s, line %d' \
% (self.instream, self.lineno))

错误报告的更多信息:

  • 无法访问的代码已添加到this 2000 change 中,此后唯一的变化是将其调整为 80 列。
  • debug 参数没有单元测试(这并不奇怪,因为它几乎没有记录,只是说“如果你想使用它,请阅读源代码”……但你可能想添加反正有一些)。

关于python - 将 shlex 置于 Debug模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29996208/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com