Python: using getattr for properties and methods

Adrienne Domingus
2 min readAug 24, 2019
Photo by Émile Perron on Unsplash

Using getattr

Before we jump into how getattr can be a useful tool for DRYing up our code, lets cover how it works (docs here)! In short, it takes an object and a string version of a property name, and returns the value of that property, if it exists on an object. It can optionally take a default value to return if the attribute can’t be found on the object, and otherwise will return an AttributeError.

Okay, let’s look at an example, using a bare-bones class. Given the Person class as defined below:

class Person(object):
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
def say_hello(name):
print "Hello, {}!".format(name)

Okay, let’s get an instance of a Person:

adrienne = Person("Adrienne", "Domingus")

Once I’ve been instantiated, we can access my first_name (and last_name) attribute using the more familiar dot notation, but we can also get it using getattr, with the same result:

>>> adrienne.first_name
'Adrienne'
>>> getattr(adrienne, ‘first_name’)
‘Adrienne’

This makes sense, because the _name attributes are…attributes. But now for the fun part: did you know that…

--

--