老生常谈python中的重载
在一些静态语言中,大都存在有一个重载的概念。这是在OOP(面对对象编程)中一个必不可少的一个行为。
所谓重载,就是多个相同函数名的函数,根据传入的参数个数,参数类型而执行不同的功能。所以函数重载实质上是为了解决编程中参数可变不统一的问题。
python 中的重载
在python中,具有重载的思想却没有重载的概念。所以有的人说python这么语言并不支持函数重载,有的人说python具有重载功能。实际上python编程中具有重载的目的缺无重载的行为,或者说是python并不需要重载!
python是一门动态语言,不需要声明变量类型,函数中可以接受任何类型的参数也就无法根据参数类型来支持重载,python没有必要去考虑参数的类型问题,这些都可以在函数内部判断处理,并无必要去在写一个函数。python 有多种传参方式,默认参数/可变参数/可变关键字参数可以处理函数参数中参数可变的问题。
python3.4中增加的重载机制
如果你不用重载就会浑身难受的话
那么在python3.4中提供有一个转发机制来实现重载
from functools import singledispatch @singledispatch def function(obj): print('%r'%(obj)) @function.register(int) def function_int(obj): print('Integer: %d'%(obj)) @function.register(str) def function_int(obj): print('String: %s'%(obj)) @function.register(list) def function_list(obj): print('List: %r'%(obj)) if __name__ == "__main__": function(1) function('hello') function(range(3)) function(object)
总结
以上所述是小编给大家介绍的python中的重载,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
相关推荐
-
用Python实现服务器中只重载被修改的进程的方法
现在,我们已经把一个Web App的框架完全搭建好了,从后端的API到前端的MVVM,流程已经跑通了. 在继续工作前,注意到每次修改Python代码,都必须在命令行先Ctrl-C停止服务器,再重启,改动才能生效. 在开发阶段,每天都要修改.保存几十次代码,每次保存都手动来这么一下非常麻烦,严重地降低了我们的开发效率.有没有办法让服务器检测到代码修改后自动重新加载呢? Django的开发环境在Debug模式下就可以做到自动重新加载,如果我们编写的服务器也能实现这个功能,就能大大提升开发效率. 可惜
-
python 运算符 供重载参考
二元运算符 特殊方法 + __add__,__radd__ - __sub__,__rsub__ * __mul__,__rmul__ / __div__,__rdiv__,__truediv__,__rtruediv__ // __floordiv__,__rfloordiv__ % __mod__,__rmod__ ** __pow__,__rpow__ << __lshift__,__rlshift__ >> __rshift__,__rrshift__ & __an
-
Python正确重载运算符的方法示例详解
前言 说到运算符重载相信大家都不陌生,运算符重载的作用是让用户定义的对象使用中缀运算符(如 + 和 |)或一元运算符(如 - 和 ~).说得宽泛一些,在 Python 中,函数调用(()).属性访问(.)和元素访问 / 切片([])也是运算符. 我们为 Vector 类简略实现了几个运算符.__add__ 和 __mul__ 方法是为了展示如何使用特殊方法重载运算符,不过有些小问题被我们忽视了.此外,我们定义的Vector2d.__eq__ 方法认为 Vector(3, 4) == [3, 4]
-
Python基类函数的重载与调用实例分析
本文实例讲述了Python基类函数的重载与调用方法.分享给大家供大家参考.具体分析如下: 刚接触Python语言的时间不长,对于这个语言的很多特性并不是很了解,有很多用法都是还不知道.今天想着写一个Python面向对象编程时的继承中的函数调用.分享出来,一起进步. 因为之前接触过Java和C++,所有对于面向对象的思想也早已经很熟析的了.这里也不再对面向对象是什么进行赘述了.我们直接上代码吧!看看对于继承和基类函数的调用在Python中是如何调用的- 首先,是基类文件base.py 复制代码 代
-
Python运算符重载用法实例分析
本文实例讲述了Python运算符重载用法.分享给大家供大家参考.具体如下: 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调用的方法如下: Method Overloads Call for __init__ 构造函数 X=Class() __del__ 析构函数 对象销毁 __add__ + X+Y,X+=Y __
-
Python运算符重载用法实例
本文实例讲述了Python运算符重载用法.分享给大家供大家参考.具体分析如下: python中,我们在定义类的时候,可以通过实现一些函数来实现重载运算符. 例子如下: # -*- coding:utf-8 -*- ''''' Created on 2013-3-21 @author: naughty ''' class Test(object): def __init__(self, value): self.value = value def __add__(self, x): return
-
老生常谈python中的重载
在一些静态语言中,大都存在有一个重载的概念.这是在OOP(面对对象编程)中一个必不可少的一个行为. 所谓重载,就是多个相同函数名的函数,根据传入的参数个数,参数类型而执行不同的功能.所以函数重载实质上是为了解决编程中参数可变不统一的问题. python 中的重载 在python中,具有重载的思想却没有重载的概念.所以有的人说python这么语言并不支持函数重载,有的人说python具有重载功能.实际上python编程中具有重载的目的缺无重载的行为,或者说是python并不需要重载! py
-
Python中操作符重载用法分析
本文实例讲述了Python中操作符重载用法.分享给大家供大家参考,具体如下: 类可以重载python的操作符 操作符重载使我们的对象与内置的一样.__X__的名字的方法是特殊的挂钩(hook),python通过这种特殊的命名来拦截操作符,以实现重载. python在计算操作符时会自动调用这样的方法,例如: 如果对象继承了__add__方法,当它出现在+表达式中时会调用这个方法.通过重载,用户定义的对象就像内置的一样. 在类中重载操作符 1.操作符重载使得类能拦截标准的python操作. 2.类可
-
python中reload重载实例用法
当我们想对python中原有的模块进行覆盖,又不希望退出当前的程序,就需要用到重载的概念.这样既能使模块得到更新,又不影响解释器的使用.在导入的模块上,也是对之前原有模块的一次覆盖,包括最初导入时所加载的各种过程.下面我们学习reload的一些基础内容,在实例中体会加载功能. 1.装载MyModule语法演示: from imp import reload reload(MyModule) 2.参数 module -- 模块对象. 3.返回值 返回模块对象. 4.实例 当前目录下有一个test.
-
老生常谈Python中的Pickle库
目录 简介 pickle与json比较 函数 dumps loads dump load 简介 Python 中有个序列化过程叫作 pickle,它能够实现任意对象与文本之间的相互转化,也可以实现任意对象与二进制之间的相互转化.也就是说,pickle 可以实现 Python 对象的存储及恢复. pickle与json比较 pickle协议和JSON (JavaScript对象表示法)之间有基本的区别: JSON是一种文本序列化格式(它输出unicode文本,尽管大多数时候它被编码
-
关于python中模块和重载的问题
模块和重载 简单来讲,任意一个以.py结尾的python文件都是一个模块.例如有A.py和B.py两个文件.在A中可以通过导入B来读取B模块定义的内容,导入操作本质上就是载入另一个文件. 基于模块的模型是python程序架构背后的核心思想. 一个大型python程序往往以多个模块文件的形式出现,并且从其它模块导入工具.但是通常会指定一个模块文件作为主文件(也叫顶层文件),该文件启动之后,就会运行整个程序.除了顶层文件之外的其他文件都是导入模块. 导入操作将会导致模块中的代码被运行,因此导入文件也
-
老生常谈python之鸭子类和多态
一. 什么是多态 <1>一种类型具有多种类型的能力 <2>允许不同的对象对同一消息做出灵活的反应 <3>以一种通用的方式对待个使用的对象 <4>非动态语言必须通过继承和接口的方式来实现 二. python中的多态 <1>通过继承实现多态(子类可以作为父类来使用) <2>子类通过重载父类的方法实现多态 class Animal: def move(self): print('animal is moving....') class Do
-
老生常谈python的私有公有属性(必看篇)
python中,类内方法外的变量叫属性,类内方法内的变量叫字段.他们的私有公有访问方法类似. class C: __name="私有属性" def func(self): print(C.__name) class sub_C(C): def info(self): print(C.__name)#派生类中不可以访问父类的私有字段 obj=C() obj.func() obj=sub_C() obj.info() 方法.属性的访问于上述方式相似,即:私有成员只能在类内部使用 以上这篇老
-
深入讲解Python中面向对象编程的相关知识
Python从第一天开始就是面向对象的语言.正因为如此,创建和使用类和对象是非常地容易.本章将帮助您在使用Python面向对象编程的技术方面所有提高. 如果没有任何以往面向对象(OO)的编程的经验,那么可能要了解一些基本的入门课程就可以了,或者至少某种形式的教程,让你有了解基本概念. 但是,这里会比较少地介绍面向对象编程(OOP): OOP术语概述 类: 用户定义的原型对象,它定义了一套描述类的任何对象的属性.属性是数据成员(类变量和实例变量)和方法,通过点符号访问. 类变量:这是一个类的所有实
-
详解Python中的__new__、__init__、__call__三个特殊方法
__new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个参数是self. __call__ : 对象可call,注意不是类,是对象. 先有创建,才有初始化.即先__new__,而后__init__. 上面说的不好理解,看例子. 1.对于__new__ class Bar(object): pass class Foo(object): def __new__(cls
-
python中reload(module)的用法示例详解
前言 本文主要给大家介绍了关于python中reload(module)用法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 1.Python2中可以和Python3中关于reload()用法的区别. Python2 中可以直接使用reload(module)重载模块. Pyhton3中需要使用如下方式: (1) >>> from imp >>> imp.reload(module) (2) >>> from imp imp
随机推荐
- VMware虚拟机安装的CentOS无法上网的解决方法
- VBA 中要用到的常数第1/2页
- Java文件流关闭和垃圾回收机制
- WPF图形解锁控件ScreenUnLock使用详解
- IE7中javascript操作CheckBox的checked=true不打勾的解决方法
- 微信小程序页面滑动屏幕加载数据效果
- php中数字0和空值的区别分析
- php链表用法实例分析
- python 实现tar文件压缩解压的实例详解
- ASP 程序实现自动升级功能
- 详解Java中使用泛型实现快速排序算法的方法
- 安装使用Percona XtraBackup来备份恢复MySQL的教程
- 修改mysql允许主机访问的权限方法
- ActiveX控件与Javascript之间的交互示例
- bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
- 表单提交(插入效果)javascript
- 一个不错的字符串转码解码函数(自写)
- 阿里云Linux CentOS 7 Docker部署使用gogs搭建自己的git服务器
- Java引用队列和虚引用实例分析
- 使用Fabric自动化部署Django项目的实现