0

有什么方法可以让我知道对象属性的值吗?例如,
info = urllib2.urlopen('http://www.python.org/')
我想知道 info 的所有属性值。也许我不知道信息的属性是什么。而 str() 或 list() 不能给我答案。

4

5 回答 5

3

要获取对象属性的所有名称,请使用dir(obj). 要获取它们的值,请使用getattr(obj, attr_name). 您可以像这样打印所有属性及其值:

for attr in dir(obj):
    print(attr, getattr(obj, attr))

如果您不需要内置属性,例如__str__etc,您可以简单地使用obj.__dict__,它返回对象属性及其值的字典。

for k in obj.__dict__:
    print(k, obj.__dict__[k])
于 2013-01-20T11:26:30.447 回答
2

您可以使用vars(info)info.__dict__。它将对象的命名空间作为attribute_name:value 格式的字典返回。

于 2013-01-20T11:11:43.893 回答
2

您可以使用 Python 的dir()。dir(info) 将返回对象信息的所有有效属性。

info = urllib2.urlopen('http://www.python.org/')
print dir(info)
于 2013-01-20T11:16:46.537 回答
1

您可以使用dir()

dir(info)

目录()人

使用参数,尝试返回该对象的有效属性列表。

于 2013-01-20T11:16:39.320 回答
0

所有使用 dir() 或查看dict的方法基本上都是不行的。

更好的检查

obj.__class__

obj.__class__.__bases__

为了了解对象到底是什么。

然后你应该检查模块的官方 API 文档。

方法和数据可能是私有的,一般不供公众使用,除非文档另有说明。

于 2013-01-20T11:48:28.373 回答