attrs: Classes Without Boilerplate¶
Release v19.3.0 (What's new?).
attrs is the Python package that will bring back the joy of writing classes by relieving you from the drudgery of implementing object protocols (aka dunder methods).
Its main goal is to help you to write concise and correct software without slowing down your code.
$ pip install attrs
The next three steps should bring you up and running in no time:
Overview will show you a simple example of
attrsin action and introduce you to its philosophy. Afterwards, you can start writing your own classes, understand what drives
attrs’s design, and know what
attrs by Example will give you a comprehensive tour of
attrs’s features. After reading, you will know about our advanced features and how to use them.
Finally Why not… gives you a rundown of potential alternatives and why we think
attrsis superior. Yes, we’ve heard about
namedtuples and Data Classes!
If at any point you get confused by some terminology, please check out our Glossary.
If you need any help while getting started, feel free to use the
python-attrs tag on StackOverflow and someone will surely help you out!
Instance initialization is one of
attrskey feature areas. Our goal is to relieve you from writing as much code as possible. Initialization gives you an overview what
attrshas to offer and explains some related philosophies we believe in.
If you want to put objects into sets or use them as keys in dictionaries, they have to be hashable. The simplest way to do that is to use frozen classes, but the topic is more complex than it seems and Hashing will give you a primer on what to look out for.
Once you’re comfortable with the concepts, our API Reference contains all information you need to use
attrsto its fullest.
attrsis built for extension from the ground up. Extending will show you the affordances it offers and how to make it a building block of your own projects.
Amber Hawkie Brown, Twisted Release Manager and Computer Owl:
Writing a fully-functional class using attrs takes me less time than writing this testimonial.
I’m looking forward to is being able to program in Python-with-attrs everywhere. It exerts a subtle, but positive, design influence in all the codebases I’ve see it used in.
attrs—classes for humans. I like it.
Łukasz Langa, creator of Black, prolific Python core developer, and release manager for Python 3.8 and 3.9:
I’m increasingly digging your attr.ocity. Good job!
Please use the
python-attrs tag on StackOverflow to get help.
Answering questions of your fellow developers is also great way to help the project!
We collect information on third-party extensions in our wiki. Feel free to browse and add your own!
If you’d like to contribute to
attrs you’re most welcome and we’ve written a little guide to get you started!
Full Table of Contents¶
- Why not…
- Type Annotations
- API Reference
- How Does It Work?