CompSci+Design+Rules+of+Thumb

Don't duplicate functionality.
Avoid having the same essential functionality implemented at two different places in your code. In the first place, it's just plain inefficient. But, in the second place, it makes your code much more difficult to maintain which, in turn, leads to a much higher likelihood of introducing errors.

If you have the same functionality implemented in more than one spot and the implementation has to change at some point down the road then you have to remember to change the functionality in both locations or else risk introducing a difficult to trace bug into your program. ("I know I changed this why isn't it behaving the way it should? #$%@#$")

It's much better to implement the functionality once and call it from where it's needed so that when the implementation has to change you only go to one location.

At a meta-level, this is the same thinking behind the value of declaring constants rather that using duplicate hard-coded values.

Use __init__ methods and constructors only/primarily to set the initial state of your objects.

Use Stubs Make yr code Self-Documenting Use Constants Is the info you put to the screen user-friendly? Would anyone who was new to your program be able to make sense of it?