博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
继承与多态
阅读量:5811 次
发布时间:2019-06-18

本文共 858 字,大约阅读时间需要 2 分钟。

 

最近学习廖大的教程,看到类的继承与多态,看了一下做一下总结。

 

自雷继承父类的时候,可以继承父类里定义的函数(类里定义函数的时候一定要将第一个参数定义self,class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。),如果需要,也可以在子类钟重新定义父类中的函数,例如

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

对于静态语言(例如Java)来说,如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,否则,将无法调用run()方法。

对于Python这样的动态语言来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了:

这就是动态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。

Python的“file-like object“就是一种鸭子类型。对真正的文件对象,它有一个read()方法,返回其内容。但是,许多对象,只要有read()方法,都被视为“file-like object“。许多函数接收的参数就是“file-like object“,你不一定要传入真正的文件对象,完全可以传入任何实现了read()方法的对象。

class Timer(object):    def run(self):        print('Start...')

 

转载于:https://www.cnblogs.com/dfdn/p/9346594.html

你可能感兴趣的文章
使用SCOM监控Windows Cluster
查看>>
搭建 nginx+django+uwsgi
查看>>
python 三元运算符
查看>>
logging模块学习:basicConfig配置文件
查看>>
Golang 使用 Beego 与 Mgo 开发的示例程序
查看>>
DHCP服务器数据备份以及还原
查看>>
ntpdate时间同步
查看>>
Asp.Net MVC 插件化开发简化方案
查看>>
LH乱码转换
查看>>
+++++++子域授权与编译安装(一)
查看>>
编程修养(七)
查看>>
数学函数
查看>>
使用route-map 配置BGP本地优先级
查看>>
asp.net怎样在URL中使用中文、空格、特殊字符
查看>>
ISA2006实战系列之二:实战ISA三种客户端部署方案(下)
查看>>
Linux后门入侵检测工具,附bash漏洞最终解决方法
查看>>
ASA5585-S20测试方案
查看>>
利用for循环打印实心棱形和空心棱形
查看>>
路由器发布服务器
查看>>
实现跨交换机VLAN间的通信
查看>>