Actual Engineering
Or if your python project ever exceeds one file, don't use python
Duck typing - or dynamic typing - is nice to use because it just lets you write methods and call them, without worrying about instantiating the right class or passing the correct type to other methods
But when you start applying actual structural programming techniques, you begin fighting with the type system and end up with String typing, basically inventing your own monkey-patched type system with string/enums/numbers and if statements.
This is stuff that the compiler already has figured out, and should be caught by the compiler. Simply learning to use the type system
Structural programming was invented ~50 years ago, and if you have to reinvent a type system to catch runtime errors that should've been compiler errors, maybe you should use something else instead before your program grows out of control. Duck typing works around all of the developments in type systems that computer science research has developed for a reason in the past five decades.
With static typing, it is possible to bypass the type system to some extent and inherit from some superclass containing common functionality. This still keeps all errors within the reach of the compiler.
One might also argue that types don't exist anyways, and we should all doing things the C way, where everything can be casted to an int and plug our ears when someone asks about the other things.