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 Cat(Animal):
    def work(self):
        print("--抓老鼠--")
class Xiaotianq(Dog):
    def fly(self):
        print("--飞--")

a=Animal()
a.eat()
wangcai=Dog()
wangcai.eat()
miao=Cat()
miao.eat()
xiapt=Xiaotianq()
xiapt.fly()
xiapt.bark()
xiapt.eat()

 

任务描述 在子类继承父类的方法时,若子类需要这个方法具有不同的功能,那么可以通过覆盖(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、付费专栏及课程。

余额充值