Python 中类的继承

在上一篇博客中介绍了 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("我正在引导我的主人!")
#创建一导盲狗对象gDog1
gDog1 = 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("我正在引导我的主人!")
#创建一导盲狗对象gDog1
gDog1 = 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)
#创建一导盲狗对象gDog1
gDog1 = GuideDog("忠诚卫士",3)
gDog1.bark()                                          
gDog1.guide() 

运行结果:

wang!wang!I am忠诚卫士!
我正在引导我的主人!
我有 3 年的工作经历!
 

example 3 中子类的GuideDog在基类的Dog的初始化基础上增加了新属性(woekyear属性),故在定义自己的__init__()方法时,需要显式调用基类的__init__()方法

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值