python提升篇(八)---方法重写

    艾萨克·牛顿(1643年1月4日—1727年3月31日)爵士,英国皇家学会会长,英国著名的物理学家,百科全书式的“全才”,著有《自然哲学的数学原理》、《光学》。

    他在1687年发表的论文《自然定律》里,对万有引力和三大运动定律进行了描述。这些描述奠定了此后三个世纪里物理世界的科学观点,并成为了现代工程学的基础。他通过论证开普勒行星运动定律与他的引力理论间的一致性,展示了地面物体与天体的运动都遵循着相同的自然定律;为太阳中心说提供了强有力的理论支持,并推动了科学革命。                                                                             

科普

知识

前言

    在上一期的文章中,我们学习了Python面向对象的类的继承,了解到通过继承可以直接得到父类的数据和方法,因此就不需要再一次定义相似的类,这些都为以后的开发工作节省了很多时间。今天我们将会继续学习Python面向对象之-----方法重写。

一、方法重写

    在之前我们学习了继承,虽然很实用,但是,还是存在一点问题,子类从父类继承了所有的方法后,如果突然要使用某个父类方法,但是父类的方法又不能满足我们现在的需求又该怎么办呢?一般情况是,你可能会重新定义一个方法,如果这个方法还需要使用父类中其他属性(数据,变量),那么我们定义的方法将会是十分冗余的,有没有一种更好的方法呢?是的,方法重写由此诞生,我们可以将父类的某个方法进行重新书写代码,在里面添加我们想要的方法,如此,就不需要再去定义别的属性,直接使用父类的各种属性,这不是很好吗?

1.1 重写模板

class 子类名(父类名)

    def 分类方法名()

           想要增加的代码

1.2 实例创建

# -*- coding: UTF-8 -*-


# 定义一个父类
class Car:        


   def __init__(self):
      print("这是一个父类")


    # 定义一个父类方法
   def Car_number(self):


       print("Car包含很多car")
 
   def Car_style(self):
      print("Car_style 包含车的款式")




# 定义子类
class s_car(Car): 


   def __init__(self):
      #Car.__init__(self)
      print("这是一个子类 S_car")


   # 方法重写
   def Car_style(self):
      print("现在该方法为子类重写后的方法")
 
# 子类的实例化, 并传给父类中定义需要的参数
s_car_real = s_car()
s_car_real.Car_style()

1.3 代码解读

    从上面的代码中,我们其实很容易看出方法重写具体体现在哪里。首先,我们新建了一个父类Car,父类中有一个方法叫做Car_style(),随后定义了一个子类去继承Car这个父类,方法重写就在于子类的类体中包含了一个与父类方法名一样的方法,但是这个方法却和之前的执行操作不一样了,之前是print("Car_style 包含车的款式"),现在是print("现在该方法为子类重写后的方法"),换句话说,虽然现在的方法名跟父类里面的一样,但是他们的实现功能已经不一样了,因此,我们可以称之为方法重写。

1.4 实验结果

END

结语

    今天的分享到此结束了,方法重写比较好理解,但是使用的时候要注意,方法名必须保证跟父类一样,否则就不是重写了,通过重写,我们可以摒弃父类中不需要的东西,然后加入我们需要的东西。

    相比于网络上很多长篇大论的文章,我们这系列的文章其实都比较短,这样的考虑在于初学的人能够循序渐进,而不是急躁的学习,认真弄懂每一个知识点,方才学得扎实,同时这样短的文章方便大家花费很少的时间掌握,可能睡前的半小时也就学了一个知识点。如此,甚好。

编辑:玥怡居士|审核:小圈圈居士

往期精彩回顾

python提升篇(七)---类的继承

python提升篇(六)---面向对象

Python提升

扫码关注我们

IT进阶之旅

我就知道你“在看”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值