It’s time to design and create an advanced project, UML comes into play. The very first useful lessen is learning from John Philip Jones.
First, he explains the object oriented programming concept clearly using bank account setting as an example.

Then we need to address that sometime a woman can change her maid name to marriage name, so to accomplish that, John introduce the notion of “data hiding” in Python by using double underscore statement together with an explicit “get that hiding field” method:

Another useful feature he mentioned is “refactoring” which means one doesn’t change the external behavior of the codes, but modify internally make the codes more efficient or simply more cosmetically pleasing to read the codes.
For example, in below codes, instead of listing two lines of self.clock_lable in the init constructor, he prefers to single out with new def of clock_display function, while invoke self.clock_display() in the init.

Moving on to the real UML designing a shopping cart as an example:

Another example by Derek Youtuber in writing out a simple coin flipping game:
