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: