Python’s built-in setattr(object, string, value)
function takes three arguments: an object, a string, and an arbitrary value. It sets the attribute given by the string on the object to the specified value. After calling the function, there’s a new or updated attribute at the given instance, named and valued as provided in the arguments. For example, setattr(object, 'attribute', 42)
is equivalent to object.attribute = 42
.
Usage
Learn by example! Here’s an example on how to use the setattr()
built-in function.
Create a Car
object porsche
with a new attribute speed
and set it to the value 100
:
# Define class with one attribute class Car: None # Create object porsche = Car() setattr(porsche, 'speed', 100) # What's the value for attribute speed? print(porsche.speed) # 100
Video setattr()
Syntax setattr()
The setattr()
object has the following syntax:
Syntax:
setattr(object, attribute, value) # Set or update object's attribute to value
Arguments | object | The object for which the attribute should be set. |
string | The attribute name to be set or updated. | |
object | The value to set the attribute to. | |
Return Value | None | Returns Nothing. Just sets or updates the attribute. |
Interactive Shell Exercise: Understanding setattr()
Consider the following interactive code:
Exercise: Before you run the code, guess the output!
Check out my new Python book Python One-Liners (Amazon Link).
If you like one-liners, you’ll LOVE the book. It’ll teach you everything there is to know about a single line of Python code. But it’s also an introduction to computer science, data science, machine learning, and algorithms. The universe in a single line of Python!
The book was released in 2020 with the world-class programming book publisher NoStarch Press (San Francisco).
Publisher Link: https://nostarch.com/pythononeliners
Practical Application: Python setattr() self
In object-oriented programming, you can often see the use of the setattr()
built-in function in combination with the object self in the __init__()
constructor method.
The idea is to be able to create a class with dynamic attributes chosen at runtime by the user or the program. This way, you can create container classes that hold arbitrary attributes.
class Person: def __init__(self, attributes): for key, value in attributes.items(): setattr(self, key, value) # Create two different persons alice = Person({'name': 'Alice', 'income': 180000, 'eyes': 'blue'}) bob = Person({'firstname': 'Max', 'lastname': 'Power'}) # Different persons, different attributes print(alice.name + ' ' + str(alice.income) + ' ' + alice.eyes) print(bob.firstname + ' ' + bob.lastname) # Output: ''' Alice 180000 blue Max Power '''
Note that this is a very convenient way to create classes with different attribute names. However, you should consider whether you can improve your object-oriented modeling because the concept of a class may not be suitable if the instances don’t have the same attributes.
Python setattr() vs assignment
There are two equivalent ways to set or update the value of a new attribute for an object:
- Use the
setattr(object, "attribute", value)
function. - Use the assignment operation
object.attribute = value
.
The difference is that the setattr()
requires a string value of the attribute name while the assignment operation requires the name of the attribute itself. Thus, if you have only the textual representation of the attribute to be set—for example, from a dictionary of key value pairs—you should use the setattr()
function. But if you have the explicit attribute name, it’s often more straightforward and readable to use the assignment.
class Person: None # ASSIGNMENT: # Create Alice with one attribute name alice = Person() alice.name = 'alice' # SETATTR(): # Create Bob with one attribute name bob = Person() setattr(bob, 'name', 'bob') print(alice.name) print(bob.name) ''' alice bob '''
Related Functions
- The
getattr()
function returns the value of an attribute. - The
setattr()
function changes the value of an attribute. - The
hasattr()
function checks if an attribute exists. - The
delattr()
function deletes an existing attribute.
Summary
Python’s built-in setattr(object, string, value)
function takes three arguments: an object, a string, and an arbitrary value.
It sets the attribute given by the string on the object to the specified value. After calling the function, there’s a new or updated attribute at the given instance, named and valued as provided in the arguments.
For example, setattr(object, 'attribute', 42)
is equivalent to object.attribute = 42
:
class O: None obj = O() setattr(obj, 'attribute', 42) print(obj.attribute) # 42
I hope you enjoyed the article! To improve your Python education, you may want to join the popular free Finxter Email Academy:
Do you want to boost your Python skills in a fun and easy-to-consume way? Consider the following resources and become a master coder!
Where to Go From Here?
Enough theory. Let’s get some practice!
Coders get paid six figures and more because they can solve problems more effectively using machine intelligence and automation.
To become more successful in coding, solve more real problems for real people. That’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?
You build high-value coding skills by working on practical coding projects!
Do you want to stop learning with toy projects and focus on practical code projects that earn you money and solve real problems for people?
🚀 If your answer is YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.
If you just want to learn about the freelancing opportunity, feel free to watch my free webinar “How to Build Your High-Income Skill Python” and learn how I grew my coding business online and how you can, too—from the comfort of your own home.