有什么方法可以让我知道对象属性的值吗?例如,info = urllib2.urlopen('http://www.python.org/')
我想知道 info 的所有属性值。也许我不知道信息的属性是什么。而 str() 或 list() 不能给我答案。
问问题
283 次
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
于 2013-01-20T11:16:39.320 回答
0
所有使用 dir() 或查看dict的方法基本上都是不行的。
更好的检查
obj.__class__
和
obj.__class__.__bases__
为了了解对象到底是什么。
然后你应该检查模块的官方 API 文档。
方法和数据可能是私有的,一般不供公众使用,除非文档另有说明。
于 2013-01-20T11:48:28.373 回答