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()
成功不是战胜敌人,而是提高自己。我们只要每天进步百分之一,那就是成功。
