class Animal: def who_are_you(self): return f"I'm a {self.__class__.__name__}" class Dog(Animal): def walk(self): print(f"{self.who_are_you()} and I'm walking.") class Duck(Animal): def run(self): print(f"{self.who_are_you()} and I'm running.") class Cup(Animal): pass class Man(Animal): pass class Bird(Animal): def fly(self): print(f"{self.who_are_you()} and I'm flying.") def please(do, obj): method = do if hasattr(obj, method): getattr(obj, method)() else: print(f"I can not {method} because {obj.who_are_you()}.") if __name__ == '__main__': # Wir müssen nicht wissen, was das Objekt ist. Aber wir wollen das Objekt nur etwas tun lassen, wenn es das kann. please("walk", Dog()) please("run", Duck()) please("walk", Cup()) please("fly", Man()) please("fly", Bird())