From 8574113dc6ad42aa0f89a1ad6ddbc17f53291b9f Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Tue, 12 Nov 2024 17:45:53 -0600 Subject: [PATCH] Add Dunder Methods as a Python TIL --- README.md | 3 ++- python/dunder-methods.md | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 python/dunder-methods.md diff --git a/README.md b/README.md index bcc3b73..504b94f 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1504 TILs and counting..._ +_1505 TILs and counting..._ --- @@ -887,6 +887,7 @@ _1504 TILs and counting..._ - [Access Instance Variables](python/access-instance-variables.md) - [Create A Dummy DataFrame In Pandas](python/create-a-dummy-dataframe-in-pandas.md) +- [Dunder Methods](python/dunder-methods.md) - [Store And Access Immutable Data In A Tuple](python/store-and-access-immutable-data-in-a-tuple.md) - [Test A Function With Pytest](python/test-a-function-with-pytest.md) - [Use pipx To Install End User Apps](python/use-pipx-to-install-end-user-apps.md) diff --git a/python/dunder-methods.md b/python/dunder-methods.md new file mode 100644 index 0000000..ecd71be --- /dev/null +++ b/python/dunder-methods.md @@ -0,0 +1,22 @@ +# Dunder Methods + +Python has all kinds of special, or rather, _magic_ methods that allow for +customizing all kinds of class behavior. There is `__init__()`, `__bool__()`, +and so many others. + +The thing they all have in common is that their names are wrapped in _double +underscores_. This is why they are called _dunder methods_. + +Some of these are used every single day, like the `__init__()` method for +defining how a class should create an object. Others, used from time to time, +are for overriding how comparisons or conversions happen. E.g. you may want to +override `__bool__()` or `__len__()` to customize the truthiness of a custom +class. + +There are so many others, ones you probably haven't even heard of. To see a +full listing, check out this [cheat sheet of every dunder +method](https://www.pythonmorsels.com/every-dunder-method/#cheat-sheet). + +Note: these are not to be confused with _dunder attributes_ which are things +like `__name__`, `__file__`, and `__version__` which correspond to a value that +you can access in a specific context rather than behavior to override.