Python iterating through object attributes
本问题已经有最佳答案,请猛点这里访问。
如何在Python中迭代对象的属性?
我有一门课:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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"]) |
现在我可以通过这样做获得我的信息:
1 2 3 | k = Twitt() k.twitter_lookup("51.5033630,-0.1276250","1mi") print k.names |
号
我想能够做的是迭代for循环中的属性,比如:
1 2 | for item in k: print item.names |
更新
对于python 3,应该使用
Python2
1 2 | for attr, value in k.__dict__.iteritems(): print attr, value |
Python3
1 2 | for attr, value in k.__dict__.items(): print(attr, value) |
号
这将打印
1 2 | 'names', [a list with names] 'tweet', [a list with tweet] |
您可以使用标准的python习惯用法,
1 2 | for attr, value in vars(k).items(): print(attr, '=', value) |
。
在python中迭代对象属性:
1 2 3 4 5 6 7 8 9 | 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"") |
。
印刷品:
1 2 3 4 5 6 7 8 9 10 11 | 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: |