大多数人如何在Python中进行console.log调试?

大多数人如何在Python中进行console.log调试?,python,class,debugging,object,tostring,Python,Class,Debugging,Object,Tostring,在Node.js中,当我想快速检查某个内容的值而不是破坏调试器并单步执行时,我会快速添加一个console.log(foo)并获得一个漂亮的: { lemmons: "pie", number: 9, fetch: function(){..} elements: { fire: 99.9 } } 非常清楚!在Python中,我得到以下信息: class LinkedList: head = None tail = None lemmons

在Node.js中,当我想快速检查某个内容的值而不是破坏调试器并单步执行时,我会快速添加一个console.log(foo)并获得一个漂亮的:

{
   lemmons: "pie",
   number: 9,
   fetch: function(){..}
   elements: {
      fire: 99.9
   }
}
非常清楚!在Python中,我得到以下信息:

class LinkedList:
  head = None
  tail = None
  lemmons = 99
或使用
vars()

{}

或使用
dir()


恶心!看看这些胡说八道——我以为python应该是快速、漂亮和干净的?人们真的是这样做的吗?他们是否对所有内容都实施客户str和定制repr?因为这看起来也有点疯狂。

您可以用许多不同的方式打印对象和Python类,这里有一个简单的方法:

class LinkedList:
    head = None
    tail = None
    lemmons = 99

    def __str__(self):
        return str(vars(LinkedList))

print LinkedList()

我建议您开始熟悉操作员。在任何情况下,这只是一个小例子,使用python有很多方法可以漂亮地打印对象和类

您可以用很多不同的方法打印对象和python类,下面是一个简单的方法:

class LinkedList:
    head = None
    tail = None
    lemmons = 99

    def __str__(self):
        return str(vars(LinkedList))

print LinkedList()

我建议您开始熟悉操作员。在任何情况下,这只是一个小例子,使用python有很多方法可以漂亮地打印对象和类,希望您能够选择什么是登录诊断的重要内容

但是,可以选择使用几行代码以“相当”的格式记录整个对象字典。例如:

from pprint import pformat

class A(object):
    def __init__(self):
        self.foo = 1
        self.bar = {"hello": "world"}
        self._private = 0

a = A()
print pformat(vars(a))
# You can also pass pformat to your logger if that's what you have.
这将返回如下内容(取决于您拥有的数据量和thw
width
constraint):


我们的期望是,您可以选择什么是重要的日志在您的诊断

但是,可以选择使用几行代码以“相当”的格式记录整个对象字典。例如:

from pprint import pformat

class A(object):
    def __init__(self):
        self.foo = 1
        self.bar = {"hello": "world"}
        self._private = 0

a = A()
print pformat(vars(a))
# You can also pass pformat to your logger if that's what you have.
这将返回如下内容(取决于您拥有的数据量和thw
width
constraint):


你说Python的日志很难看?你曾经尝试调试C++吗?)实例变量位于
\uuuu init\uuuu
中,而不是类级别。这就是为什么从
变量中得到如此无用的输出的原因。不过,我建议您编写一个自定义的
\uuuu repr\uuuu
。@user2357112哇,是的。。这很有道理。谢谢我只是打印我感兴趣的那些属性,像node.js那样输出任何东西都会太混乱。你说Python的日志很难看吗?你曾经尝试调试C++吗?)实例变量位于
\uuuu init\uuuu
中,而不是类级别。这就是为什么从
变量中得到如此无用的输出的原因。不过,我建议您编写一个自定义的
\uuuu repr\uuuu
。@user2357112哇,是的。。这很有道理。谢谢我只是打印我感兴趣的属性,输出node.js所做的任何事情都会非常混乱。