前言:很早之前看过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(),也能执行,这就是鸭子模型