py_重写(样例)

class Animal:
    def eat(self):
        print("--吃--")
    def drink(self):
        print("--喝--")
    def sleep(self):
        print("--睡觉--")
    def run(self):
        print("--跑--")

class Dog(Animal):
    def bark(self):
        print("--汪汪叫--")

class Xiaotianq(Dog):
    def fly(self):
        print("--飞--")
    def bark(self):
        print("狂叫")#重写
        Dog.bark(self)#调用被重写的方法,必须写self
        super().back(self)#调用被重写方法2,
xiaotq=Xiaotianq()
xiaotq.bark()#狂叫 汪汪叫 汪汪叫



 

编程要求 在本关给出的文件中,定义了一个包装类WrapClass。本关的编程任务是补全WrapClass.py文件中实现授权和调用类中方法的代码,具体要求如下: 填入重写__getattr__()实现授权的代码; 填入实化类,通过对象调用thelist,并输出thelist第三个元素的代码。 本关涉及的代码文件src/step3/WrapClass.py的代码框架如下: class WrapClass(object): def __init__(self,obj): self.__obj = obj def get(self): return self.__obj def __repr__(self): return 'self.__obj' def __str__(self): return str(self.__obj) # 请在下面填入重写__getattr__()实现授权的代码 ########## Begin ########## ########## End ########## thelist = [] inputlist = input() for i in inputlist.split(','): result = i thelist.append(result) # 请在下面填入实化类,并通过对象调用thelist,并输出thelist第三个元素的代码 ########## Begin ########## ########## End ########## 测试说明 本文的测试文件是WrapClass.py,具体测试过程如下: 平台自动编译生成WrapClass.exe; 平台运行WrapClass.exe,并以标准输入方式提供测试输入; 平台获取WrapClass.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。 以下是平台对src/step3/WrapClass.py测试集: 预期输入: zhangsan,lisi,wangwu,zhaoliu 预期输出: wangwu 预期输入: 23,67,98,100,120,234 预期输出: 98 class WrapClass(object): def __init__(self,obj): self.__obj = obj def get(self): return self.__obj def __repr__(self): return 'self.__obj' def __str__(self): return str(self.__obj) # 请在下面填入重写__getattr__()实现授权的代码 ########## Begin ########## ########## End ########## thelist = [] inputlist = input() for i in inputlist.split(','): result = i thelist.append(result) # 请在下面填入实化类,并通过对象调用thelist,并输出thelist第三个元素的代码 ########## Begin ########## ########## End ##########
03-21
任务描述 在子类继承父类的方法时,若子类需要这个方法具有不同的功能,那么可以通过覆盖(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 开始你的任务吧,祝你成功!
最新发布
03-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值