Internal state is protected, and the public interface is minimal.
class Secret: def __init__(self): self.public = "Everyone sees this" self._protected = "Please don't touch" self.__private = "Name mangled"
class Base: def process(self): print("Base")