Python中是否有一个函数列出特定对象的属性和方法?
类似的东西:
ShowAttributes ( myObject )
-> .count
-> .size
ShowMethods ( myObject )
-> len
-> parse
答案 0 :(得分:51)
您想查看dir()
函数:
>>> li = []
>>> dir(li)
['append', 'count', 'extend', 'index', 'insert',
'pop', 'remove', 'reverse', 'sort']
li
是一个列表,因此dir(li)
返回列表中所有方法的列表。请注意,返回的列表包含方法的名称作为字符串,而不是方法本身。
编辑以回复评论:
不,这也会显示所有继承的方法。考虑这个例子:
<强> test.py:强>
class Foo:
def foo(): pass
class Bar(Foo):
def bar(): pass
Python解释器:
>>> from test import Foo, Bar
>>> dir(Foo)
['__doc__', '__module__', 'foo']
>>> dir(Bar)
['__doc__', '__module__', 'bar', 'foo']
您应该注意 Python's documentation州:
注意:因为提供了
dir()
主要是为了方便使用 一个交互式提示,它试图 提供一组有趣的名字 超过它试图提供一个 严格或一致定义的集合 名称,及其详细行为 可能会在各个版本中发生变化。对于 例如,元类属性不是 在参数列表中的参数 是一个班级。
因此,在您的代码中使用它是不安全的。请改用vars()
。 Vars()
不包含有关超类的信息,您必须自己收集它们。
如果您使用dir()
在交互式翻译中查找信息,请考虑使用help()
。
答案 1 :(得分:12)
dir()和vars()不适合你吗?
答案 2 :(得分:10)
并且为了更加人性化的方式,您可以使用see:
In [1]: from see import see
In [2]: x = "hello world!"
In [3]: see(x)
Out[3]:
[] in + * % < <= == != > >= hash() help() len()
repr() str() .capitalize() .center() .count() .decode()
.encode() .endswith() .expandtabs() .find() .format() .index()
.isalnum() .isalpha() .isdigit() .islower() .isspace() .istitle()
.isupper() .join() .ljust() .lower() .lstrip() .partition()
.replace() .rfind() .rindex() .rjust() .rpartition() .rsplit()
.rstrip() .split() .splitlines() .startswith() .strip()
.swapcase() .title() .translate() .upper() .zfill()
答案 3 :(得分:2)
另一种方法是使用漂亮的IPython环境。它允许您完成选项卡以查找对象的所有方法和字段。
答案 4 :(得分:1)
令我惊讶的是,没有人提到python对象的功能:
keys()