i think this is the first thing my python-brain is struggling to understand, it's something that is intended to ensure that if you're going to write several different "types" of class, ensures that they all implement the same stuff?
e.g payment processor, you have a PaymentProcessor interface and then whenever you want to accept payments from Credit Cards, Crypto, whatever you use the PaymentProcessor interface to ensure that a future step has all the correct information?
@autumn instead of your code having to reason about all PaymentProcessors ever, your code only programs against a PaymentProcessor interface (exposing a, say, transfer(acc1, acc2, amount) method), and then at runtime you can swap any PaymentProcessor you want in and it'll work the same.
in python you'd Just assume the type has the methods and fail on runtime if not, in java the compiler makes sure of that