Discuss / Python / 参考其他人的试着理解下。

参考其他人的试着理解下。

Topic source
在此插入代码

继承与多态的学习,Python的“file-like object“就是一种鸭子类型。

对真正的文件对象,它有一个read()方法,返回其内容。

但是,许多对象,只要有read()方法,都被视为“file-like object“。

许多函数接收的参数就是“file-like object“,

你不一定要传入真正的文件对象,完全可以传入任何实现了read()方法的对象。

-- coding: utf-8 --

class Animal(object): def run(self): print('Animal running....') def run1(self): print('你能否继承?')

class Dog(Animal): def run(self): print('Dog running...')

class Cat(Animal): def run(self): print('Cat running')

定义一个有run方法但不是继承Animal

class Timer(object): def run(self): print('滴滴滴。。。')

多态,只需要传入的对象有run方法即可!

(Q:是一部分功能一样还是全部功能一样?A: 只要一部分像就可以)

def run_twice(objHasRun): objHasRun.run() objHasRun.run()

测试

run_twice(Animal()) run_twice(Cat()) run_twice(Dog()) run_twice(Timer())

测试结果

Animal running....

Animal running....

Cat running

Cat running

Dog running...

Dog running...

滴滴滴。。。

滴滴滴。。。


  • 1

Reply