Python Protocol Vs Abstract Class Meaning