Chapter 17 - Pythonic OOP: Properties and Dunder Methods