问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python 重载和重写的区别

发布网友 发布时间:2022-04-27 13:24

我来回答

2个回答

懂视网 时间:2022-05-10 07:46

在自定义类内添加相应的方法,让自定义类创建的实例能像内建对象一样进行内建函数操作,这就是函数重写。

对象转字符串函数:repr(obj) ,返回一个能代表此对象的表达式字符串,通常eval(repr(obj)) == obj (这个字符串通常是给python解释执行器运行用的),str(obj) 通过给定的对象返回一个字符串(这个字符串通常是给人阅读的)。

对象转字符串函数的重写方法:

repr(obj) 函数的重写方法:

def __repr__(self):

str(obj) 函数的重写方法:

def __str__(self):

说明:

1. str(obj) 函数先查找, obj.__str__()方法,调用此方法并返回结果

2. 如果没有obj.__str__()方法时,则返回obj.__repr__()方法的结果并返回

3. 如果obj.__repr__方法不存在,则调用object类的__repr__实例方法显示<__main__.XXXX object at 0xAABBCCDD>格式的字符串

示例:

# 此示例示意通过重写 repr 和 str方法改变转为字符串的规则
class MyNumber:
 def __init__(self, value):
 '构造函数,初始化MyNumber对象'
 self.data = value
 
 def __str__(self):
 '''转换为普通人识别的字符串'''
 # print("__str__方法被调用!")
 return "自定义数字类型对象: %d" % self.data
 
 def __repr__(self):
 '''转换为eval能够识别的字符串'''
 return 'MyNumber(%d)' % self.data
 
 
n1 = MyNumber(100)
n2 = MyNumber(200)
print('repr(n1) ====>', repr(n1))
print('str(n2) ====>', str(n2))

热心网友 时间:2022-05-10 04:54

重载和重写,这是两个新概念,是两个令我们容易混淆的概念。方法重载(overloading method)
是在一个类里面,方法名字相同,而参数不同。返回类型呢?可以相同也可以不同。方法重写(overiding method)
子类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。方法重载是让类以统一的方式处理不同类型数据的
一种手段。Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同个数和
类型的参数来决定具体使用哪个方法,
这就是多态性。方法重写:在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定
的修改,这就需要采用方法的重写。方法重写又称方法覆盖。
若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。
如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类重写方法的规则:
参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载.访问修饰符的*一定要大于被重写方法的访问修饰符
(public>protected>default>private)重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽
泛的检查型异常.例如,父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出
IOException的子类异常,可以抛出非检查异常.重载的规则:  必须具有不同的参数列表;  可以有不同的返回类型,只要参数列表不同就可以
了;  可以有不同的访问修饰符;  可以抛出不同的异常;注意,Java的方法重载要求同名的方法必须有不同的参数表,仅有返回类型不同是不足以区分两
个重载的方法。重写方法只能存在于具有继承关系中,重写方法只能重写父类非私有的方法。下面分别举一个例子来说明方法重载:public class
TestOverLoad{ public static void main(String[] args) {Test test = new
Test(); test.print(null); } }class Test{ public void print(String
some){System.out.println("String version print"); } public void
print(Object some){ System.out.println("Object version print");
}}该程序输出的结果是String version print。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
招投标技术负责人是什么证 欧美的经典的线稿漫画 推荐几款欧美漫画,跪求!!! 十大DC漫画推荐 DC漫画必看经典盘点 dc好看的漫画有哪些 十大欧美漫画推荐 欧洲经典漫画盘点 欧洲好看的漫画有哪些 欧美有哪些经典的漫画作品? 十大美国漫画推荐 美国漫画经典作品 美国著名的漫画有哪些 音悦台mini客户端为什么不能记住账号自动登录呢,,,每次都要重新输~郁... 请问 音悦台 和 百度 怎样解绑手机? 如何注册音悦台账号 简述python面向对象编程中函数重载和重写的区别 python类方法重写 老人说有些人不能吃狗肉的吃了会破相这是真的吗,会不会跟八字有关系的 什么样的人不能吃狗肉? 狗肉有什么病的人不能吃? word怎样把一句话的每一个字分别填充到表格里? 狗肉不能与绿豆一起吃么? 吃狗肉会中毒吗? 狗肉能和牛肉一起吃吗 狗肉可以和鸡肉一起吃吗百度百科 怎么申请 注册 苏泊尔电饭煲怎么操作? 狗肉和鹅肉能一起吃吗 今年28岁,以前从来没有皮肤过敏今天皮肤过敏了,就是吃了狗肉,羊肉加鸡蛋黄和土豆烧鸡以后全身皮肤过? 怎么申请 注册 狗肉和什么不能同食用 狗肉与那些东西不能一起吃 如何才能注册新? 怎么注册? 怎么注册 在Python中为什么重写__new__方法时,不需要声明它是静态方法? python中重写==的s方法 python 重载方法有哪些特点 为什么 Python 不支持函数重载 python怎么给导入模块的类重写其中部分类方法啊? OPPOA9手机显示PCAM10登录过的设备,用vivo手机怎么登录PCAM10 python Ctypes 重写C接口的问题 python自定义函数中如何使他自身重新运行,有没有这样的代码? python,如何使用自定义函数来写进另一个文件 怎么理解Python中重载?通俗理解是 python 有没有方法的重载 丝瓜的效用 爸爸欠贷款要子女还吗 法律上有规定父亲欠款儿子还的吗?法律上是怎么规定的 父亲欠的贷款还不上,儿子有还款责任吗 父母借贷款没还上要子女承担吗 父母银行贷款,没有能力偿还,子女有义务偿还吗 父母贷款没还清子女就要还吗 父亲贷款没还子女需要承担责任吗 父母贷款没还清子女就要还吗?