标签: inspect

如何列出Python模块中的所有函数?

我在我的系统上安装了一个python模块,我希望能够看到它中有哪些函数/类/方法.

我想在每一个上调用doc函数.在ruby中,我可以执行类似ClassName.methods的操作,以获取该类上可用的所有方法的列表.python中有类似的东西吗?

例如.就像是:

from somemodule import foo
print foo.methods # or whatever is the correct method to call
Run Code Online (Sandbox Code Playgroud)

python reflection module inspect

376
推荐指数
13
解决办法
59万
查看次数

如何在Python中获取当前模块中所有类的列表?

我已经看到很多人从模块中提取所有类的例子,通常是这样的:

# foo.py
class Foo:
    pass

# test.py
import inspect
import foo

for name, obj in inspect.getmembers(foo):
    if inspect.isclass(obj):
        print obj
Run Code Online (Sandbox Code Playgroud)

真棒.

但我无法找到如何从当前模块中获取所有类.

# foo.py
import inspect

class Foo:
    pass

def print_classes():
    for name, obj in inspect.getmembers(???): # what do I do here?
        if inspect.isclass(obj):
            print obj

# test.py
import foo

foo.print_classes()
Run Code Online (Sandbox Code Playgroud)

这可能是非常明显的事情,但我找不到任何东西.谁能帮我吗?

python reflection inspect

278
推荐指数
7
解决办法
16万
查看次数

如何读取函数的签名,包括默认参数值?

给定一个函数对象,我该如何获得它的签名?例如,对于:

def myMethod(firt, second, third='something'):
    pass
Run Code Online (Sandbox Code Playgroud)

我想得到"myMethod(firt, second, third='something')".

python arguments inspect

108
推荐指数
8
解决办法
6万
查看次数

如何检查Javascript对象

如何在警报框中检查对象?通常警告对象只会抛出节点名称:

alert(document);
Run Code Online (Sandbox Code Playgroud)

但我想在警告框中获取对象的属性和方法.如果可能,我该如何实现此功能?或者还有其他建议吗?

特别是,我正在寻找一个生产环境的解决方案,其中console.log和Firebug不可用.

javascript object inspect

96
推荐指数
7
解决办法
10万
查看次数

如何使用给定的装饰器获取python类的所有方法

如何获取用@ decorator2装饰的给定类A的所有方法?

class A():
    def method_a(self):
      pass

    @decorator1
    def method_b(self, b):
      pass

    @decorator2
    def method_c(self, t=5):
      pass
Run Code Online (Sandbox Code Playgroud)

python methods class decorator inspect

74
推荐指数
4
解决办法
3万
查看次数

如何使用inspect来从python中获取调用者的信息?

我需要从被调用者那里获取调用者信息(什么文件/什么行).我了解到我可以使用inpect模块来达到目的,但不是如何.

如何通过检查获得这些信息?或者有没有其他方法来获取信息?

import inspect

print __file__
c=inspect.currentframe()
print c.f_lineno

def hello():
    print inspect.stack
    ?? what file called me in what line?

hello()
Run Code Online (Sandbox Code Playgroud)

python inspect

72
推荐指数
2
解决办法
3万
查看次数

堆栈和框架有什么区别?

在什么情况下我想用一个而不是另一个?

有什么区别:

>>> import inspect
>>> print(inspect.getouterframes(inspect.currentframe()))
[(<frame object at 0x8fc262c>, '<stdin>', 1, '<module>', None, None)]
Run Code Online (Sandbox Code Playgroud)

和:

>>> import traceback
>>> traceback.extract_stack()
[('<stdin>', 1, '<module>', None)]
Run Code Online (Sandbox Code Playgroud)

更新:

另一个:

>>> import sys
>>> print(sys._getframe().f_trace,sys._getframe().f_code)
(None, <code object <module> at 0x8682a88, file "<stdin>", line 1>)
Run Code Online (Sandbox Code Playgroud)

我不明白这里的细微差别:

  • 堆栈框架
  • 框架对象
  • 堆栈跟踪

更新2,问题问题后的一段时间,但非常相关

python sys inspect traceback

47
推荐指数
2
解决办法
1万
查看次数

使用字典选择要执行的函数

我正在尝试使用函数式编程来创建包含键和要执行的函数的字典:

myDict={}
myItems=("P1","P2","P3",...."Pn")
def myMain(key):
    def ExecP1():
        pass
    def ExecP2():
        pass
    def ExecP3():
        pass
        ...
    def ExecPn():
        pass  
Run Code Online (Sandbox Code Playgroud)

现在,我已经看到用于在模块中查找已定义函数的代码,我需要执行以下操作:

    for myitem in myItems:
        myDict[myitem] = ??? #to dynamically find the corresponding function
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何列出所有Exec函数,然后使用字典将它们分配给所需的项目?所以最后我会myDict["P1"]() #this will call ExecP1()

我真正的问题是我有大量的这些项目,我创建了一个库来处理它们,所以最终用户只需要调用 myMain("P1")

我认为使用检查模块,但我不确定如何做到这一点.

我有理由避免:

def ExecPn():
    pass
myDict["Pn"]=ExecPn
Run Code Online (Sandbox Code Playgroud)

是我必须保护代码,因为我使用它来提供我的应用程序中的脚本功能.

python dictionary function inspect

40
推荐指数
5
解决办法
8万
查看次数

Elixir,IO.inspect不修剪一长串清单

当我做:

IO.inspect [:right, :top, :left, ...very_long_list]
Run Code Online (Sandbox Code Playgroud)

我只得到第一项(这是解决15拼图的动作列表),如下所示:

[:right, :top, :left, :bot, :bot, :left, :top, :top, :right, :right, :bot,
  :left, :bot, :left, :top, :right, :bot, :right, :top, :top, :left, :bot,
  :left, :top, :right, :right, :bot, :bot, :left, :top, :top, :left, :bot,
  :right, :top, :right, :bot, :left, :left, :top, :right, :bot, :right, :top,
  :left, :left, :bot, ...] # => See the '...'
                                instead I would like 
                                to get the complete list
Run Code Online (Sandbox Code Playgroud)

如何判断IO.inspect不修剪清单?有选择还是什么?

elixir inspect

37
推荐指数
2
解决办法
8939
查看次数

如何在 Chrome Devtools 中将 CSS 样式部分移至底部?

当我在 Google Chrome 上检查时,我同时看到了 HTML 和 CSS 部分,如下所示。

在此输入图像描述

如何将 CSS 部分移动到底部,同时保留 HTML 部分在上面,如下所示?

在此输入图像描述

css styles google-chrome inspect google-chrome-devtools

35
推荐指数
3
解决办法
7968
查看次数