Tag: Python

SOLID Python part 1: Introduction

User profile image Johan Vergeer Jan 14, 2020 min read
SOLID is an acronym for the first five principles of Object-Oriented Design created by Robert C. Martin. These principles help us to develop software that can be maintained and extended throughout its lifetime. The SOLID principles do this by avoiding code smells, refactoring code and applying Agile Software Development.

SOLID Python part 2: Single Responsibility Principle

User profile image Johan Vergeer Jan 15, 2020 min read

Multiple Inheritance and the Diamond Problem

User profile image Johan Vergeer Jan 17, 2020 min read
In this post, I will show you what multiple inheritance is, how you can use it and what to watch out for. First you will learn about single and multiple inheritance and how you can use them in Python. After this you will learn some multiple inheritance gotchas among which the dreaded diamond problem.

SOLID Python part 4: Liskov Substitution Principle

User profile image Johan Vergeer Jan 17, 2020 min read

SOLID Python part 5: Interface Segregation Principle

User profile image Johan Vergeer Jan 18, 2020 min read

SOLID Python part 6: Dependency Inversion Principle

User profile image Johan Vergeer Jan 24, 2020 min read
This is the fifth and last article on the SOLID Principles with Python. In this article we will look into the D of SOLID which stands for Dependency Inversion Principle.

Python Dependency Injection Frameworks

User profile image Johan Vergeer Jan 26, 2020 min read
Even though the usage of Dependency Injection is not as common in the Python community as it is in the C# or Java communities, it is still a very powerful way to implement the Dependency Inversion Principle. Thankfully there are several packages available to us that provide us with a dependency injection implementation, which I will discuss in this article.

How to save computation time with functools.cached_property?

User profile image Johan Vergeer Jul 5, 2020 min read
The cached_property decorator can save a lot of computation time in return of some RAM memory. Can this decorator be used anywhere, or should it be used sparingly? Let's find out!