在此插入代码
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')
class Timer(object): def run(self): print('滴滴滴。。。')
def run_twice(objHasRun): objHasRun.run() objHasRun.run()
run_twice(Animal()) run_twice(Cat()) run_twice(Dog()) run_twice(Timer())
Sign in to make a reply
凝神目视阿萨德
继承与多态的学习,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...
滴滴滴。。。
滴滴滴。。。