ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

EduCoder-Linux 与 Python编程2021-类的继承-第2关:覆盖方法

2021-11-30 09:32:31  阅读:171  来源: 互联网

标签:EduCoder Python self am hello sayHello 2021 class def


目录

任务描述

在子类继承父类的方法时,若子类需要这个方法具有不同的功能,那么可以通过覆盖(overriding)来重写这个方法。本关的任务是让学习者掌握通过继承覆盖方法。

相关知识

通过继承覆盖方法,也就是在子类里再写一个与父类中一样的方法,实现自己想要实现的功能。例如:

class Parent:
def sayHello(self):
print(“hello,i am class parent”)
class Subclass(Parent):
def sayHello(self):
print(“hello,i am class subclass”)
sc = Subclass()
sc.sayHello()
结果为:

hello,i am class subclass
Subclass继承了Parent类,但是因为它在类中重写了sayHello(),所以在创建实例后,调用的是重写后的sayHello()。

调用父类方法
在重写了父类中的方法后,也可以调用父类中的被重写方法。这时就是去调用一个未绑定的父类方法。例如:

Parent.sayHello(sc)
结果为:

hello,i am class parent
还可以在子类的重写方法里显示调用。例如:

class Parent:
def sayHello(self):
print(“hello,i am class parent”)
class Subclass(Parent):
def sayHello(self):
Parent.sayHello(self)
print(“hello,i am class subclass”)
sc = Subclass()
sc.sayHello()
结果为:

hello,i am class parent
hello,i am class subclass
但是最好的方法是在子类的重写方法里使用super()内建方法。例如:

class Parent:
def sayHello(self):
print(“hello,i am class parent”)
class Subclass(Parent):
def sayHello(self):
super(Subclass,self).sayHello()
print(“hello,i am class subclass”)
sc = Subclass()
sc.sayHello()
结果为:

hello,i am class parent
hello,i am class subclass
如果您想了解更多覆盖方法的相关知识,请参考:[美] Wesley J.Chun 著《 Python 核心编程》第十三章。

编程要求

本关的任务是补全Point.py文件中的代码,具体要求如下:

填入覆盖父类getPoint()方法的代码,并在这个方法中分别得出x - y与z - h结果的绝对值。
本关涉及的代码文件src/Step2/Point.py的代码框架如下:

class point:
def init(self,x,y,z,h):
self.x = x
self.y = y
self.z = z
self.h = h
def getPoint(self):
return self.x,self.y,self.z,self.h
class line(point):
# 请在下面填入覆盖父类getPoint()方法的代码,并在这个方法中分别得出x - y与z - h结果的绝对值
########## Begin ##########
########## End ##########
print(length_one,length_two)

测试说明

本文的测试文件是Pointtest.py,具体测试过程如下:

平台自动编译生成Point.exe;
平台运行Point.exe,并以标准输入方式提供测试输入;
平台获取Point.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step2/Point.py的样例测试集:

预期输入:

12
41
6
0

预期输出:

29
6
预期输入:

2
90
65
10
预期输出:

88
55
开始你的任务吧,祝你成功!

这世间,唯有青春和梦想不可辜负。花开正好,微风不燥,扬帆起航,追逐梦想。

代码示例

class Point:
    def __init__(self,x,y,z,h):
        self.x = x
        self.y = y
        self.z = z
        self.h = h
    def getPoint(self):
        return self.x,self.y,self.z,self.h
class Line(Point):
    # 请在下面填入覆盖父类getPoint()方法的代码,并在这个方法中分别得出x - y与z - h结果的绝对值
    ########## Begin ##########
    def getPoint(self):
        length_one = abs(self.x - self.y)
        length_two = abs(self.z - self.h)
    ########## End ##########
        print(length_one,length_two)

标签:EduCoder,Python,self,am,hello,sayHello,2021,class,def
来源: https://blog.csdn.net/weixin_51402180/article/details/121624769

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有