有没有方法让我知道对象属性的值?
例如,
info = urllib2.urlopen('http://www.python.org/')
我想知道所有属性的信息价值。也许我不知道信息的属性是什么。 str()或list()不能给我答案。
答案 0 :(得分:3)
要获取对象属性的所有名称,请使用dir(obj)
。要获取其值,请使用getattr(obj, attr_name)
。您可以打印所有属性及其值,如下所示:
for attr in dir(obj):
print(attr, getattr(obj, attr))
如果您不需要内置属性,例如__str__
等,则可以使用obj.__dict__
,它返回对象属性及其值的字典。
for k in obj.__dict__:
print(k, obj.__dict__[k])
答案 1 :(得分:2)
您可以使用vars(info)
或info.__dict__
。它将使用attribute_name:value格式将对象的名称空间作为字典返回。
答案 2 :(得分:2)
您可以使用Python的dir()。 dir(info)将返回对象信息的所有有效属性。
info = urllib2.urlopen('http://www.python.org/')
print dir(info)
答案 3 :(得分:1)
答案 4 :(得分:0)
使用dir()或查看 dict 的所有方法基本上都是不行的。
更好地检查
obj.__class__
和
obj.__class__.__bases__
以便了解对象到底是什么。
然后你应该检查模块的官方API文档。
除非文档另有说明,否则方法和数据可能是私有的,一般不供公众使用。