https://varinderjotsingh.medium.com/demystifying-object-oriented-programming-concepts-in-python-5a87d90a80da