Python迭代对象的属性

如何在Python中迭代对象的属性?

我有一个class级:

class Twitt: def __init__(self): self.usernames = [] self.names = [] self.tweet = [] self.imageurl = [] def twitter_lookup(self, coordinents, radius): cheese = [] twitter = Twitter(auth=auth) coordinents = coordinents + "," + radius print coordinents query = twitter.search.tweets(q="", geocode=coordinents, rpp=10) for result in query["statuses"]: self.usernames.append(result["user"]["screen_name"]) self.names.append(result['user']["name"]) self.tweet.append(h.unescape(result["text"])) self.imageurl.append(result['user']["profile_image_url_https"]) 

现在我可以通过这样做来获得我的信息:

 k = Twitt() k.twitter_lookup("51.5033630,-0.1276250", "1mi") print k.names 

我希望能够做的是循环遍历for循环中的属性,如下所示:

 for item in k: print item.names 

尝试一下:

 for attr, value in k.__dict__.iteritems(): print attr, value 

这将打印

 'names', [a list with names] 'tweet', [a list with tweet] 

更新

对于python 3,你应该使用items()而不是iteritems()

你可以使用标准的Python成语vars()

 for attr, value in vars(k).items(): print(attr, '=', value) 

在python中遍历一个对象属性:

 class C: a = 5 b = [1,2,3] def foobar(): b = "hi" for attr, value in C.__dict__.iteritems(): print "Attribute: " + str(attr or "") print "Value: " + str(value or "") 

打印:

 python test.py Attribute: a Value: 5 Attribute: foobar Value: <function foobar at 0x7fe74f8bfc08> Attribute: __module__ Value: __main__ Attribute: b Value: [1, 2, 3] Attribute: __doc__ Value: