As outlined in my blog post, I decided to take on a new habit using a technique I found on the 'get disciplined' subreddit.
As one of my new habits I chose: "Code for 15 minutes every day". As part of the habit I've started creating a series of blog posts on important and awesome Python features, including object oriented programming, properties, function annotations, duck typing, etc.
Since I was bored by the usual tutorial examples, I looked for a topic that would make it fun to study and implement the concepts. And since I absolutely love Harry Potter, I started creating a whole Harry Potter universe around the topics. So if you like Harry Potter and want to improve your Python knowledge and skills (and maybe also your Harry Potter knowledge), get right into it!
A logbook of what I worked on each day can be found on my website.
The code runs in Python 3.6, the code on data classes requires Python 3.7 (or you pip install data classes for Python 3.6).
Start date: 07/23/2018
Day | Topics | Blog post with explanations | Code for the day |
---|---|---|---|
1 | Intro to object oriented programming, classes, inheritance | Day 1 | Code day 1 |
2 | Class methods, instance methods, static methods, using class methods as alternative constructors | Day 2 | Code day 2 |
3 | Function annotations | Day 3 | Code day 3 |
4 | To-string conversion, __repr__, __str__ |
Day 4 | Code day 4 |
5 | Decorators | Day 5 | No new code added |
6 | Properties, @property and property() , setters, getters |
Day 6 | Code day 6 |
7 | Underscore patterns for variable naming, _variable, __variable, __variable__, etc. |
Day 7 | No new code added |
8 | New methods and classes added to the HP universe | Day 8 | Code day 8 |
9 | Duck typing, EAFP principle | Day 9 | Code day 9 |
10 & 11 | Namedtuples | Day 10 & 11 | Code day 10 & 11 |
12 - 15 | Abstract Base Classes | Day 12 to 15 | Code day 12 to 15 |
16 - 18 | Data Classes | Day 16 to 18 | Code day 16 to 18 |
In case you find a mistake in the code or the blog posts, please let me know by opening an issue!