如何在Python中实现虚拟方法?
我知道PHP或Java的虚拟方法。
如何在Python中实现它们?
还是我要在抽象类中定义一个空方法并覆盖它?
-
当然,您甚至不必在基类中定义方法。在Python中,方法要比虚拟方法更好-它们是完全动态的,因为Python中的输入是 鸭子输入 。
class Dog: def say(self): print "hau" class Cat: def say(self): print "meow" pet = Dog() pet.say() # prints "hau" another_pet = Cat() another_pet.say() # prints "meow" my_pets = [pet, another_pet] for a_pet in my_pets: a_pet.say()
Cat
而且Dog
在Python中,甚至不必从通用基类派生该行为即可-
您可以免费获得它。就是说,一些程序员更喜欢以更严格的方式定义他们的类层次结构,以更好地记录它并施加 一定
的键入严格性。这也是可能的,例如参见abc
标准模块。