当然,您甚至不必在基类中定义方法。在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
标准模块。