第1关:初识继承
本关的测试文件中定义了一个父类animals类,在此类中定义了三个方法,分别为:breath()、run()、foraging()。而在通关文件中,定义了两个类:fish与leopard,这两个类都继承自animals类。
本关的编程任务是补全animals.py文件中的定义子类部分,具体要求如下:
- 填入定义继承自
animals类的fish类的代码; - 填入定义继承自
animals类的leopard类的代码。
import animalstest
# 请在下面填入定义fish类的代码,fish类继承自animals类
########## Begin ##########
class fish(animalstest.animals):
########## End ##########
def __init__(self,name):
self.name = name
def swim(self):
print("%s会游泳" %self.name)
# 请在下面填入定义leopard类的代码,leopard类继承自animals类
########## Begin ##########
class leopard(animalstest.animals):
########## End ##########
def __init__(self,name):
self.name = name
def climb(self):
print("%s会爬树" %self.name)
fName = input()
lName = input()
f = fish(fName)
f.breath()
f.swim()
f.foraging()
l = leopard(lName)
l.breath()
l.run()
l.foraging()
第2关:覆盖方法
本关的任务是补全Point.py文件中的代码,具体要求如下:
- 填入覆盖父类
getPoint()方法的代码,并在这个方法中分别得出x - y与z - h结果的绝对值。
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)
第3关:从标准类派生
本关的编程任务是补全ChangeAbs.py文件中的代码,具体要求如下:
-
使用
super()内建函数去捕获对应的父类,并调用它的__new__()方法来计算输入数值的绝对值,返回最后的结果; -
使用
super()内建函数去捕获对应父类,从而使输入字典自动排序并返回最后的结果。
class ChangeAbs(int):
def __new__(cls, val):
# 填入使用super()内建函数去捕获对应父类以调用它的__new__()方法来计算输入数值的绝对值的代码
# 求一个数的绝对值的函数为abs()
# 返回最后的结果
########## Begin ##########
return super(ChangeAbs, cls).__new__(cls,abs(val))
########## End ##########
class SortedKeyDict(dict):
def keys(self):
# 填入使用super()内建函数去捕获对应父类使输入字典自动排序的代码
# 返回最后的结果
########## Begin ##########
return sorted(super( SortedKeyDict, self).keys())
########## End ##########
第4关:多重继承
本关的编程任务是补全src/Step4/multiInherit.py文件的代码,实现当调用类E的test()时,继承的是类A的test()。具体要求如下:
- 填入定义子类
C的代码; - 填入定义子类
D的代码。
class A(object):
def test(self):
print("this is A.test()")
class B(object):
def test(self):
print("this is B.test()")
def check(self):
print("this is B.check()")
# 请在下面填入定义类C的代码
########## Begin ##########
class C(A,B):
########## End ##########
pass
# 请在下面填入定义类D的代码
########## Begin ##########
class D(A,B):
########## End ##########
def check(self):
print("this is D.check()")
class E(C,D):
pass

本文通过四个编程关卡,介绍了Python中的面向对象编程概念,包括类的继承、方法覆盖、标准类派生及多重继承。在第一关,展示了如何定义子类并实现父类方法。第二关中,学习了如何覆盖父类方法以计算两点间距离。第三关涉及使用`super()`函数创建新类,继承自内置类型并实现绝对值计算及字典排序。第四关讲解了多重继承,使得类E调用的是类A的`test()`方法。这些例子深入浅出地阐述了Python面向对象编程的核心特性。
2565

被折叠的 条评论
为什么被折叠?



