dir()
返回所有已定义名称的列表,但是尝试调用我看到列出的函数只是为了发现它实际上是一个属性,或尝试访问属性只是为了发现它是令人讨厌的实际上是可赎回的。如何让dir()
更具信息性?
答案 0 :(得分:3)
要显示模块中已定义名称的列表,例如数学模块,以及它们可以执行的类型:
[(name,type(getattr(math,name))) for name in dir(math)]
getattr(math,name)从math模块返回对象(函数或其他),由变量" name"中的字符串值命名。例如,类型(getattr(数学,' pi'))是' float'
答案 1 :(得分:3)
没有办法让dir
提供更丰富的信息。如你所说,但你可以使用callable
和getattr
函数:
[(a, 'func' if callable(getattr(obj, a)) else 'attr') for a in dir(obj)]
显然,功能本身仍属于属性,但你明白了。
答案 2 :(得分:0)
另一种方法是在getmembers
中使用inspect
功能。你可以通过
from inspect import getmembers
getmembers(obj) # => ...
有关详细信息,请查看:
https://docs.python.org/2/library/inspect.html#inspect.getmembers
答案 3 :(得分:0)