零基础入门python3.7 ——基础知识总结(二十二) 类的继承

一。类的三大特性

  • 封装
  • 继承
  • 多态

二。继承

继承机制通常用于创建和现有类功能类似的新类,或者是新类只需要在现有类的基础上添加一些新 的属性和方法。但又不想将现有类的代码复制到新类上。简而言之继承就是可以轻松的实现类的重复使用。

  • 示例一

假设有两类汽车。一大一小首先小的汽车有自动挡和自动大灯的功能。 而大的汽车在具备了小汽车的两项功能后还有自动驾驶的功能。 不难发现这两辆车都具有相同的功能。 在创建类时最笨的办法就是把相同的代码写两遍。

class Automobile:
    def fun(self):
        print("这是自动挡的功能")
        
    def fun1(self):
        print("这是自动大灯的功能")
        
class BigAutomobile:
    def fun(self):
        print("这是自动挡的功能")

    def fun1(self):
        print("这是自动大灯的功能")
        
    def fun2(self):
        print("这是自动驾驶的功能")

这种方式虽然可以达到最终的目的但是存在一些问题。 比如说会出现重复的代码。而且随着类中相同功能的增多就越明显。更简单的做法是使用继承机制。其实现思路是让BigAutomobile继承Automobile,这样一来假如在BigAutomobile要调用关于自动挡的功能。那么解释器会先去BigAutomobile中找关于自动挡的功能。如果找的到就使用。如果找不到则会自动去Automobile去找。示例如下:

class Automobile:
    def fun(self):
        print("这是自动挡的功能")

    def fun1(self):
        print("这是自动大灯的功能")

class BigAutomobile(Automobile):

    def fun2(self):
        print("这是自动驾驶的功能")
  • 实现继承的类叫子类。被继承的类叫做父类或者基类。超类, 因此BigAutomobile属于子类。Automobile属于超类。
  • 一个子类可以继承多个父类
class Automobile:
    def fun(self):
        print("这是自动挡的功能")

    def fun1(self):
        print("这是自动大灯的功能")

class RedAutomobile:
    name = "小张"
    age = 36

class Person:
    city = "成都"


class BigAutomobile(Automobile, RedAutomobile, Person):

    def fun2(self):
        print("这是自动驾驶的功能")
  • 注意继承和派生的区别:继承是相对于子类来说的叫法。 派生则是相对于父类的叫法
  • 继承后如何使用类
class Automobile:
    def fun(self):
        print("这是自动挡的功能")

    def fun1(self):
        print("这是自动大灯的功能")

class RedAutomobile:
    name = "小张"
    age = 36

class Person:
    city = "成都"


class BigAutomobile(Automobile, RedAutomobile, Person):

    def fun2(self):
        print("这是自动驾驶的功能")


a = BigAutomobile()
print(a.name)
print(a.city)
a.fun()
a.fun1()
a.fun2()

小张
成都
这是自动挡的功能
这是自动大灯的功能
这是自动驾驶的功能

三。多继承

既然类支持多继承那么就不得不面临一个严重的问题。就是多个父类中可能会出现多个同名的属性或方法。python的出处理机制是:根据子类继承多个父类时这些父类的前后顺序决定,即排在前面父类中的类方法会覆盖后面父类中的同名类方法。

class Automobile:
    name = "小王"
    def fun(self):
        print("这是自动挡的功能")

    def fun1(self):
        print("这是自动大灯的功能")

class RedAutomobile:
    name = "小张"
    age = 36

class Person:
    city = "成都"

    def fun1(self):
        print("这是一个同名方法")


class BigAutomobile(Automobile, RedAutomobile, Person):

    def fun2(self):
        print("这是自动驾驶的功能")

a = BigAutomobile()
print(a.name)
a.fun1()


小王
这是自动大灯的功能

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值