Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何查看所有当前对象及其直接方法_Python_Debugging_Twisted - Fatal编程技术网

Python 如何查看所有当前对象及其直接方法

Python 如何查看所有当前对象及其直接方法,python,debugging,twisted,Python,Debugging,Twisted,我正在用TwistedPython阅读本教程。 我以前从未真正调试过python 我想在reactor.stop触发之前查看哪些类的实例是活动的 我在检查这个 使用此代码 import gc for obj in gc.get_objects(): 如何有选择地查看最上面的信息,然后进一步查看继承的数据等等 从一个扭曲的角度来看,我想看看哪些工厂实例当前处于活动状态,以及它与协议的关系如何。但是,如果您真的想了解如何调试Python,请查看“dir(obj)”,它将列出对象的所有属性和方法

我正在用TwistedPython阅读本教程。

我以前从未真正调试过python

我想在reactor.stop触发之前查看哪些类的实例是活动的

我在检查这个

使用此代码

import gc
for obj in gc.get_objects():
如何有选择地查看最上面的信息,然后进一步查看继承的数据等等


从一个扭曲的角度来看,我想看看哪些工厂实例当前处于活动状态,以及它与协议的关系如何。但是,如果您真的想了解如何调试Python,请查看“dir(obj)”,它将列出对象的所有属性和方法

class Blah(object):
    pass

b = Blah()

for x in dir(b):
    try:
        print getattr(b,x,False)
    except Exception, e:
        print x,e
将产生:

<class '__main__.Blah'>
<method-wrapper '__delattr__' of Blah object at 0x1028ba490>
{}
None
<built-in method __format__ of Blah object at 0x1028ba490>
<method-wrapper '__getattribute__' of Blah object at 0x1028ba490>
<method-wrapper '__hash__' of Blah object at 0x1028ba490>
<method-wrapper '__init__' of Blah object at 0x1028ba490>
__main__
<built-in method __new__ of type object at 0x10276a4e0>
<built-in method __reduce__ of Blah object at 0x1028ba490>
<built-in method __reduce_ex__ of Blah object at 0x1028ba490>
<method-wrapper '__repr__' of Blah object at 0x1028ba490>
<method-wrapper '__setattr__' of Blah object at 0x1028ba490>
<built-in method __sizeof__ of Blah object at 0x1028ba490>
<method-wrapper '__str__' of Blah object at 0x1028ba490>
<built-in method __subclasshook__ of type object at 0x7fd522c6e490>

{}
没有一个
__主要__
现在,您的里程可能会因objc之类的东西而有所不同,因为它是一个围绕共享库调用的薄型Python包装器。它们不会有docstring,或者在某些情况下,如果函数查找是针对共享库的延迟查找,则会响应“dir”。但是,你永远不知道

大多数时候,当涉及到objc的东西时,我只是翻遍了他们的源代码,想弄清楚当正常的挖土方法不起作用时他们是如何做的

说到常规方法:

Twisted是一个简洁的特性,您还可以提供一个telnet或SSH可访问的交互式Python shell,它实际上可以“实时”地戳和戳东西

或者

另一个技巧是向对象添加“del(self)”函数,该函数在垃圾回收器清理对象时(当对象被删除/超出范围时)打印出某些内容

或者

你也可以玩,或者如果你喜欢,ncurses是很棒的。查看这个问题,了解一些使用pdb的妙招

而且,如果情况变得更糟,您可以随时使用帮助(对象)


这些基本上就是让我度过这一天的调试方法。如果其他人有一些聪明的想法,不要害羞。

但是,如果你真的只是想了解如何调试Python,请查看“dir(obj)”,它将列出对象的所有属性和方法

class Blah(object):
    pass

b = Blah()

for x in dir(b):
    try:
        print getattr(b,x,False)
    except Exception, e:
        print x,e
将产生:

<class '__main__.Blah'>
<method-wrapper '__delattr__' of Blah object at 0x1028ba490>
{}
None
<built-in method __format__ of Blah object at 0x1028ba490>
<method-wrapper '__getattribute__' of Blah object at 0x1028ba490>
<method-wrapper '__hash__' of Blah object at 0x1028ba490>
<method-wrapper '__init__' of Blah object at 0x1028ba490>
__main__
<built-in method __new__ of type object at 0x10276a4e0>
<built-in method __reduce__ of Blah object at 0x1028ba490>
<built-in method __reduce_ex__ of Blah object at 0x1028ba490>
<method-wrapper '__repr__' of Blah object at 0x1028ba490>
<method-wrapper '__setattr__' of Blah object at 0x1028ba490>
<built-in method __sizeof__ of Blah object at 0x1028ba490>
<method-wrapper '__str__' of Blah object at 0x1028ba490>
<built-in method __subclasshook__ of type object at 0x7fd522c6e490>

{}
没有一个
__主要__
现在,您的里程可能会因objc之类的东西而有所不同,因为它是一个围绕共享库调用的薄型Python包装器。它们不会有docstring,或者在某些情况下,如果函数查找是针对共享库的延迟查找,则会响应“dir”。但是,你永远不知道

大多数时候,当涉及到objc的东西时,我只是翻遍了他们的源代码,想弄清楚当正常的挖土方法不起作用时他们是如何做的

说到常规方法:

Twisted是一个简洁的特性,您还可以提供一个telnet或SSH可访问的交互式Python shell,它实际上可以“实时”地戳和戳东西

或者

另一个技巧是向对象添加“del(self)”函数,该函数在垃圾回收器清理对象时(当对象被删除/超出范围时)打印出某些内容

或者

你也可以玩,或者如果你喜欢,ncurses是很棒的。查看这个问题,了解一些使用pdb的妙招

而且,如果情况变得更糟,您可以随时使用帮助(对象)


这些基本上就是让我度过这一天的调试方法。如果其他人有一些聪明的想法,请不要害羞。

谢谢……我如何列出与反应堆相关的所有当前工厂及其协议?不确定如何回溯反应堆注册的内容-在这种情况下,我强烈建议设置TwistedConch,以便您可以通过SSH连接到应用程序中运行的交互式Python CLI。您可以运行“dir()”,单独查看顶级“全局”对象-并从那里开始深入。谢谢…我如何列出与反应堆相关的所有当前工厂及其协议?不确定如何回溯在反应堆中注册的内容-在这种情况下,我强烈建议设置TwistedConch,这样您就可以通过SSH连接到交互式Python中CLI在应用程序中运行。您可以单独运行“dir()”来查看顶级“全局”对象,然后从那里开始向下钻取。