首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将shlex置于调试模式中

将shlex置于调试模式中
EN

Stack Overflow用户
提问于 2015-05-01 22:43:41
回答 1查看 119关注 0票数 7

我想看看shlex对于我正在尝试构建的东西是否是一个好的选择,所以我想我应该把它放在调试模式中来玩。只有,shlex的构造函数有这个奇怪的事:它将self.debug设置为0,然后立即检查它是否为真。

代码语言:javascript
复制
…
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条件下输出语句的方法(如果是的话,如何输出?),它是一个bug,还是我没有考虑的第三种可能性?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-02 00:34:24

首先,我很确定您已经发现了一个bug,您应该使用去报告吧。(您应该确保它仍然存在于最新的3.x代码中,但我只是检查了一下,它确实存在。)我不认为shlex对象有什么不合理的地方,直到它们初始化…之后才允许您设置debug=1但是在这种情况下,它们不应该在初始化器中检查self.debug,因为无法设置它。

但这并不是一个很难解决的问题。这种方式唯一丢失的是第一条消息,它只打印出您可以打印自己的公共属性。因此,例如:

代码语言:javascript
复制
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))

有关bug报告的更多信息:

  • 无法访问的代码是在2000年的变化中添加的,此后唯一的更改是将其适合80列。
  • debug参数没有单元测试(这并不奇怪,因为它几乎没有文档化,只是说:“如果您想使用这个,请阅读源代码”…“但无论如何,您可能需要添加一些)。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29996208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档