python笔记——继承与多态

本文结构:

  1. 类的继承
  2. 多态

一、类的继承


  1. 在编写类的时候并非一定要从0开始,如果你要编写的类是某一个现成类的特殊版本,可使用继承。原有的类叫做父类,而新类叫做子类,子类会自动继承父类的所有属性和方法,同时还可以定义自己的特有属性和特有方法。
    通过下面的demo来一一说明。
demo1

现在有一个Person类,它有一个属性age,有一个run方法,可以打印信息,我们希望定义一个Boy和Girl类来继承Person的属性和方法。

class Person():
    def __init__(self,age):
        self.age = age
    def run(self):
        print("i am a person,i am %d years old"%self.age)
class Boy(Person):
    pass
class Girl(Person):
    pass
xiaoming = Boy(16)
xiaoli  = Girl(15)
xiaoming.run()
xiaoli.run()

输出结果

i am a person,i am 16 years old
i am a person,i am 15 years old     ####这说明Boy类和Girl类都继承了Person的方法和属性
  1. 但如果子类和父类存在同名的方法,子类的方法会覆盖父类的方法。
demo2

还是上面的那个例子,但我们想给Gril类和Boy类定义一个run的新方法。

class Boy(Person):
    def run(self):
        print("i am a boy,i am %d years old"%self.age)
class Girl(Person):
    def run(self):
        print("i am a gril,i am %d years old"%self.age)
xiaoming = Boy(16)
xiaoli  = Girl(15)
xiaoming.run()
xiaoli.run()

输出结果

i am a boy,i am 16 years old
i am a gril,i am 15 years old   

从输出结果可以看出虽然调用的方法没变,但打印出来的信息发生了改变,说明子类的同名(run)方法会覆盖父类的(run)方法。

二、多态


其实我们定义的Person类和python的dict类、list类在原理上是相同的。
判断一个变量是否是某个类型可以用isinstance()判断:

demo3

还是上面的的例子,请大家仔细理解下

>>> a = [1,2,3]
>>> isinstance(a, list)
True
>>> isinstance(xiaoming, Person)
True
>>> isinstance(xiaoming, Boy)
True

这说明xiaoming 既是Boy类又是Person类,这个时候就可以和多态的概念联系上了。
子类继承了父类的属性,又拥有自己的属性,这就叫多态。

所以我们在定义类的时候可以充分利用这两种性质,将父类拥有的属性和方法和子类的特有属性和方法区分开,增加代码的可读性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值