python学习笔记——类的继承

来源:互联网 发布:windows git 自动更新 编辑:程序博客网 时间:2024/05/18 22:11

在上一篇博客中介绍了python中的类和对象,详细请见http://blog.csdn.net/m0_37324740/article/details/76144902,python提供了类的继承机制,解决软件重用问题。

其格式为:

class 子类名(基类名1,基类名2...):

定义子类新特性


example 1 

#导入已经定义的Dog类class Dog:    def setname(self,name):        self.name = name     def setcolor(self,color):        self.color = color    def bark(self):        print("wang!wang!I am" + self.name + "!")        #定义GuideDog类class GuideDog(Dog):                                  #继承基类Dog类    #定义子类自己的__init__()方法    def __init__(self,name):        Dog.setname(self,name)                        #调用基类的setname()方法    #定义子类自己的guide()方法    def guide(self):        print("我正在引导我的主人!")#创建一导盲狗对象gDog1gDog1 = GuideDog("忠诚卫士")gDog1.bark()                                          #调用继承的bark()方法gDog1.guide()                                         #调用自己的guide()方法
运行结果:

wang!wang!I am忠诚卫士!我正在引导我的主人!

example 1中的基类没有采用__init__方法,如果采用__init__方法,这继承时分两种情况:


example 2 

#定义基类Dog类class Dog:    #使用__init__方法    def __init__(self,name):        self.name = name    def bark(self):        print("wang!wang!I am" + self.name + "!")        #定义GuideDog类class GuideDog(Dog):                                                               #定义子类自己的guide()方法    def guide(self):        print("我正在引导我的主人!")#创建一导盲狗对象gDog1gDog1 = GuideDog("忠诚卫士")gDog1.bark()                                          gDog1.guide()  

运行结果:

wang!wang!I am忠诚卫士!我正在引导我的主人!

example 2 中的GuideDog的初始化与基类的__init__()方法相同,故无需重新定义,直接使用即可。


example 3 

#定义基类Dog类class Dog:    #使用__init__方法    def __init__(self,name):        self.name = name    def bark(self):        print("wang!wang!I am" + self.name + "!")        #定义GuideDog类class GuideDog(Dog):          #定义自己的__init__()方法    def __init__(self,name,year):        self.workyear = year                            #增加新属性workyear        Dog.__init__(self,name)                         #显式调用基类的__init__()方法    #定义子类自己的guide()方法    def guide(self):        print("我正在引导我的主人!")        print("我有 %d 年的工作经历!"%self.workyear)#创建一导盲狗对象gDog1gDog1 = GuideDog("忠诚卫士",3)gDog1.bark()                                          gDog1.guide() 
运行结果:

wang!wang!I am忠诚卫士!我正在引导我的主人!我有 3 年的工作经历!
example 3 中子类的GuideDog在基类的Dog的初始化基础上增加了新属性(woekyear属性),故在定义自己的__init__()方法时,需要显式调用基类的__init__()方法


原创粉丝点击