Python 入门之类的继承(一)

@

1关:初识继承

在面向对象编程中,有一种机制叫做继承。通过继承,子类可以继承其父类所有的属性和方法,这在很大程度上增强了代码的重用。以下场景便模拟了继承的现实场景:在自然界中存在着许多的动物,动物间有许多的共性。比如:呼吸、奔跑、觅食等,但是它们之间也存在着不同之处,比如鱼会游泳、豹子会爬树……

在上面这个场景里,动物就是父类,它具有着所有动物都有的共性,而鱼和豹子是子类,它们不仅具有共性:呼吸、奔跑、觅食,还有着自己独特的特征:游泳、爬树。本关的任务是让学习者掌握 Python 中类的继承机制。

父类

父类也称基类,其声明方法与一般的类的声明方法一样。父类中存在着一些公共的属性和方法,子类继承于父类。

子类

子类继承于父类,拥有父类中的属性和方法,它自己也可根据实际情况声明一些属于自己的属性和方法。子类声明方法:

class subClass(parentClass1,parentClass2,parentClass3,……):
    class_suite

类名后的括号里填的就是所继承的父类的名称。例如:

class ParentClass:
    static_var = 100
    def parentMethod(self):
        print("这是父类")
class SubClass(ParentClass):
    def subMethod(self):
        print("这是子类")
sc = SubClass()
print(sc.static_var)
sc.parentMethod()
sc.subMethod()
print("%s所属的父类为%s" %(sc.__class__,SubClass.__bases__))

输出结果为:

100
这是父类
这是子类
<class __main__.SubClass>所属的父类为(<class __main__.ParentClass>,)

对于任何子类来说,__bases__类是一个包含其父类的集合的元组,对于没有父类的类来说,其__bases__属性值为空。

如果您想了解更多继承的相关知识,请参考:[美] Wesley J.Chun 著《 Python 核心编程》第十三章。

class animals:
    def breath(self):
        print("%s会呼吸" %self.name)
    def run(self):
        print("%s会奔跑" %self.name)
    def foraging(self):
        print("%s会觅食" %self.name)
# 请在下面填入定义fish类的代码,fish类继承自animals类
########## Begin ##########
class fish(animals):
########## End ##########
    def __init__(self,name):
        self.name = name
    def swim(self):
        print("%s会游泳" %self.name)

# 请在下面填入定义leopard类的代码,leopard类继承自animals类
########## Begin ##########
class leopard(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()
预期输入:

鱼
豹子
预期输出:

鱼会呼吸
鱼会游泳
鱼会觅食
豹子会呼吸
豹子会奔跑
豹子会觅食
预期输入:

虾
猫
预期输出:

虾会呼吸
虾会游泳
虾会觅食
猫会呼吸
猫会奔跑
猫会觅食

原题的答案:(可以通过.来调用类中的函数哦,比如:animalstest.animals)

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()

成功不是战胜敌人,而是提高自己。我们只要每天进步百分之一,那就是成功。

经验分享 程序员 微信小程序 职场和发展