前言:很早之前看过Python,鉴于遗忘太快,以此记之
鸭子模型: 一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子
这是动态语言奇妙的地方
看下面的代码:
# 动物 class Animal(object): def __init__(self, name): self.name = name #成员变量 def run(self): print(self.name, 'Animal is running !') # 鸭子 class Duck(Animal): def run(self): print('Duck is running...') # 任一具有run方法的类 class Similar(): def __init__(self, name): self.name = name #成员变量 def run(self): print(self.name, "相似也能Run!")三个类,其中鸭子是动物的子类,Similar是一个具有run方法的类 看下测试run()方法
def runTest(animal): animal.run() # 有run方法的类都能调用 animal = Animal('动物') runTest(animal) dog = Dog('狗狗') runTest(dog) duck = Duck('鸭子') runTest(duck) similar = Similar('任意') runTest(similar)将Similar类传入runTest(),也能执行,这就是鸭子模型
