怎么理解Python中重载?通俗理解是python里面没有重载吧?
正常的重载说的应该是函数方法的重载,即两个函数的名称相同但是参数不同是重载 , 会出现重载的情况一般是函数实现相同功能时,遇到参数类型可能不同的情况 , 会出现重载,如比较常见的对于加法的实现,如果输入两个整数相加则直接使用整数加法,如果两个字符串相加则使用字符串的拼接 。输入的参数类型不同,其实是两个不同的函数,这在那种强类型语言中是可以利用函数重载来实现的 , 而python中函数类型是动态的各种各样的,所以不需要重载这个机制 。相同函数名就是表示同一个方法 。
为什么 Python 不支持函数重载重载和重写 , 这是两个新概念 , 是两个令我们容易混淆的概念 。方法重载(overloadingmethod)是在一个类里面,方法名字相同,而参数不同 。返回类型呢?可以相同也可以不同 。方法重写(overidingmethod)子类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写 。方法重写又称方法覆盖 。方法重载是让类以统一的方式处理不同类型数据的一种手段 。Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义 。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法,这就是多态性 。方法重写:在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法 。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写 。方法重写又称方法覆盖 。若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法 。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类重写方法的规则:参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载.访问修饰符的限制一定要大于被重写方法的访问修饰符(publicprotecteddefaultprivate)重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常.例如,父类的一个方法申明了一个检查异常IOException , 在重写这个方法是就不能抛出Exception , 只能抛出IOException的子类异常,可以抛出非检查异常.重载的规则:必须具有不同的参数列表;可以有不同的返回类型,只要参数列表不同就可以了;可以有不同的访问修饰符;可以抛出不同的异常;注意,Java的方法重载要求同名的方法必须有不同的参数表,仅有返回类型不同是不足以区分两个重载的方法 。重写方法只能存在于具有继承关系中,重写方法只能重写父类非私有的方法 。下面分别举一个例子来说明方法重载:publicclassTestOverLoad{publicstaticvoidmain(String[]args){Testtest=newTest();test.print(null);}}classTest{publicvoidprint(Stringsome){System.out.println("Stringversionprint");}publicvoidprint(Objectsome){System.out.println("Objectversionprint");}}该程序输出的结果是Stringversionprint 。
python 有没有方法的重载Python 类可以定义专用方法,专用方法是在特殊情况下或当使用特别语法时由 Python 替你调用的,而不是在代码中直接调用(象普通的方法那样) 。
.1__init__
类似于构造函数
#!/usr/local/bin/python
class Study:
def __init__(self,name=None):
self.name = name
def say(self):
print self.name
study = Study("Badboy")
study.say()
.2__del__
类似于析构函数
推荐阅读
- 铠甲勇士拿瓦格斗游戏,铠甲勇士拿瓦官方格斗版下载
- 如何提高卫浴电商运营,如何提高卫浴电商运营效率
- postgresql查询当前数据库名称的简单介绍
- 虚拟机打开游戏登录没网络,虚拟机登录不了游戏
- linux命令gcc功能 linux中gcc
- oracle前100条数据,oracle前1000条数据
- pdf格式怎么转换成word文档免费,pdf格式怎么转换成word文档免费软件
- 饲料电商如何选,如何选择饲料经销商
- jsp文件中java代码 如何在jsp中写java程序