Python iterating through object attributes
182,374
Solution 1
UPDATED
For python 3, you should use items()
instead of iteritems()
PYTHON 2
for attr, value in k.__dict__.iteritems():
print attr, value
PYTHON 3
for attr, value in k.__dict__.items():
print(attr, value)
This will print
'names', [a list with names]
'tweet', [a list with tweet]
Solution 2
You can use the standard Python idiom, vars()
:
for attr, value in vars(k).items():
print(attr, '=', value)
Solution 3
Iterate over an objects attributes in 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 "")
Prints:
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:
Related videos on Youtube
Author by
Zach Johnson
Updated on June 27, 2020Comments
-
Zach Johnson almost 4 years
How do I iterate over an object's attributes in Python?
I have a 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"])
Now I can get my info by doing this:
k = Twitt() k.twitter_lookup("51.5033630,-0.1276250", "1mi") print k.names
I want to be able to do is iterate over the attributes in a for loop like so:
for item in k: print item.names
-
levi over 9 yearswhat attributes ? you mean over 'k' attributes?
-
Zach Johnson over 9 yearsI may not be using the proper terminology here but yes I want to be able to have my usernames, tweets, etc. returned in some sort of object that i can iterate through them individually. like so: for item in twitter print item.usernames. Something along those lines.
-
levi over 9 yearstry my answer and see if works for you.
-
-
trdavidson over 7 yearsk.iteritems() was removed in Python3, use k.items() instead.
-
levi over 7 years@trdavidson I added the note.
-
Free Url over 6 yearsAlso new in python3 you need parens for the print operation.
-
Davos about 6 yearsHidden
__dict__
method very useful! Also, to return as a dict use a dict comprehensionprint({attr:value for attr, value in k.__dict__.iteritems()})
-
alex almost 6 yearsI tried this on an object which is inheriting from another one, and it only returned the properties belonging to the base class.
-
Konstantin Sekeresh over 4 yearsThis works if and only if the object has a
__dict__
attribute. This is not always true, and you should iterate through__slots__
if it doesn't.