惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Recent Announcements
Recent Announcements
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
MyScale Blog
MyScale Blog
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
U
Unit 42
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
腾讯CDC
I
InfoQ
GbyAI
GbyAI
博客园_首页

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科 pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数-互联网IT百科 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科
什么是多态,统一函数接口实现多态-互联网IT百科
2021-09-26 · via 老董笔记

  1、以强弱数据类型变量赋值来理解多态

  了解多态就可以从强类型语言和弱类型语言出发,如果只是学python可能不好理解,因为没有对比就无从无感受。学过C或者其他强类型语言的话就好理解。数据类型的概念可以查看编程语言为什么定义数据类型 

  1)强类型定义语言

  强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了,不能被赋值成其他类型。如果你定义了一个整型变量a=1,那么就不能再给a赋值成字符串。强类型定义语言是类型安全的语言。

  2)弱类型定义语言

  数据类型可以被忽略的语言。它与强类型定义语言相反,同一个变量可以赋不同数据类型的值。

  python是弱类型语言,对于弱类型的语言来说,变量并没有声明类型,因此同一个变量可以在不同的时间赋不同的值。当同一个变量在调用同一个方法时,完全可能呈现出多种行为(具体呈现出哪种行为由该变量所引用的对象来决定),这就是所谓的多态(Polymorphism)。

  2、以函数调用来理解多态

  定义1个函数,给这个函数的参数传递数值就打印数值,传递字符串就打印字符串。即在传参的时候不用考虑参数的数据类型,这个也是多态。(如果是强类型语言,那么函数的参数是规定了数据类型的,传参的时候要符合参数的数据类型,传数值就只能传数值)。

# ‐*‐ coding: utf‐8 ‐*‐

def print_info(arg):
    print(arg,type(arg))

print_info("字符串")
print_info(123)
字符串 <class 'str'>
123 <class 'int'>

  3、统一函数接口实现多态

  同1个函数能触发不同的类做出不同的响应,就是多态性的应用实例,下面通过统一函数接口实现了多态,my_open函数接受不同的对象,这些对象内部都实现了1个open方法。只要有1个对象内部有open方法就可以作为参数传给my_open,而不用考虑这个对象到底是什么类。

# -*- coding: utf-8 -*-

class Baidu(object):
    def open(self):
        print("访问百度.....")

class Google(object):
    def open(self):
        print("访问谷歌.....")

def my_open(obj_type):
    """统一调用接口"""
    obj_type.open()


if __name__ == "__main__":
    baidu_obj = Baidu()
    google_obj = Google()
    my_open(baidu_obj)
    my_open(google_obj)

访问百度.....
访问谷歌.....

  上述只要有1个对象内部有open方法就可以作为参数传给my_open,而不用考虑这个对象到底是什么类。这在开发中可以规范大家的行为,比如有mysql和clickhouse这2个数据库操作类,规定统一用connect方法连接库,这样不管是新人还是老人都可以方便的使用维护代码,因为事先约定好了只要拿到对象就可以connect。具体如何去约束如何去规范可以看下一篇文章!

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会