zoukankan      html  css  js  c++  java
  • python之类与对象(4)

    5. 类的继承

    继承可谓是重中之重,也是面向对象编程的核心内容之一。子类可以继承父类的属性以及方法。作为一名测试人员,学习了类之后,我们可以很好的把代码与数据分离开来,有了基本的封装思想。接下来我们将进一步学习类

    5.1 类的继承简单用法

    我们首先来看一下最传统的继承,直接继承父类的所有属性和方法,不用做任何改变。观看以下代码

     1 #!/usr/bin/python3
     2 # -*- coding: utf-8 -*-
     3 # @Time     :2018/12/4 16:03
     4 # @Author   :Yosef
     5 # @Email    :wurz529@foxmail.com
     6 # @File:    :SoftwareTestEngineer.py
     7 # @Software :PyCharm Community Edition
     8 class SoftwareTestEngineer:
     9     def __init__(self,name,age):
    10         self.name = name
    11         self.age = age
    12 
    13     def basic_skill(self):
    14         print(self.name+"今年"+str(self.age)+"岁,会简单的功能测试。。")
    15 
    16     def salary(self, salary):
    17         print("薪资大概是%s" % salary)
    18 
    19 class JuniorSoftwareTestEngineer(SoftwareTestEngineer):
    20     # def auto_test(self):
    21     #     print("会自动化测试")
    22     pass
    23 
    24 # logen = SoftwareTestEngineer("Logen","22")
    25 # logen.basic_skill()
    26 # logen.salary("6000-8000")
    27 
    28 ding = JuniorSoftwareTestEngineer("Ding","25")
    29 ding.basic_skill()
    30 ding.salary("12000-15000")

    我定义了一个SoftwareTestEngineer类,定义了一些属性和方法,然后用JuniorSoftwareTestEngineer继承父类SoftwareTestEngineer,然后什么都不给。然后去实例化子类对象,调用父类的方法属性,发现都是成功的。

    这个就是最简单的继承方法,子类不需要做任何事情,就可以调用父类的所有属性方法。

    5.2 类继承的重写与拓展

    如果仅仅是继承父类,什么都不做,那将毫无意义。这里的重写以及拓展都是针对方法而言。

    5.2.1 重写

    重写就是针对父类的方法进行重写。有的方法我们继承过来之后,会不符合我们的需求,那我们就需要重写其中的方法。还是以刚刚的代码为例,我们做一下修改。

     1 #!/usr/bin/python3
     2 # -*- coding: utf-8 -*-
     3 # @Time     :2018/12/4 16:03
     4 # @Author   :Yosef
     5 # @Email    :wurz529@foxmail.com
     6 # @File:    :SoftwareTestEngineer.py
     7 # @Software :PyCharm Community Edition
     8 class SoftwareTestEngineer:
     9     def __init__(self,name,age):
    10         self.name = name
    11         self.age = age
    12 
    13     def basic_skill(self):
    14         print(self.name+"今年"+str(self.age)+"岁,会简单的功能测试。。")
    15 
    16     def salary(self, salary):
    17         print("薪资大概是%s" % salary)
    18 
    19 class JuniorSoftwareTestEngineer(SoftwareTestEngineer):
    20     # def auto_test(self):
    21     #     print("会自动化测试")
    22 
    23     def basic_skill(self):
    24         print(self.name+"今年"+str(self.age)+"岁,会写自动化测试脚本。。")
    25 
    26 # logen = SoftwareTestEngineer("Logen","22")
    27 # logen.basic_skill()
    28 # logen.salary("6000-8000")
    29 
    30 ding = JuniorSoftwareTestEngineer("Ding","25")
    31 ding.basic_skill()
    32 ding.salary("12000-15000")

    这里子类的basic_skill方法就是重写了父类的basic_skill方法,实例化子类之后,调用basic_skill也是调用新写的方法,没有重写的属性方法就依然继承父类。

    5.2.2 拓展

     重写只是针对父类继承过来的方法进行修改,但是实际上,任何类都会有自己的新特性,这是父类中所没有的新特性。简单来说,我们可以在新的类中定义新的方法。依然对上小节代码做出修改:

     1 class SoftwareTestEngineer:
     2     def __init__(self,name,age):
     3         self.name = name
     4         self.age = age
     5 
     6     def basic_skill(self):
     7         print(self.name+"今年"+str(self.age)+"岁,会简单的功能测试。。")
     8 
     9     def salary(self, salary):
    10         print("薪资大概是%s" % salary)
    11 
    12 class JuniorSoftwareTestEngineer(SoftwareTestEngineer):
    13     # def auto_test(self):
    14     #     print("会自动化测试")
    15 
    16     def basic_skill(self):
    17         print(self.name+"今年"+str(self.age)+"岁,会写自动化测试脚本。。")
    18 
    19     def code(self):
    20         print(self.name+"也会写代码哦")
    21 
    22 # logen = SoftwareTestEngineer("Logen","22")
    23 # logen.basic_skill()
    24 # logen.salary("6000-8000")
    25 
    26 ding = JuniorSoftwareTestEngineer("Ding","25")
    27 ding.code()

    总结就是,子类可以调用父类的属性方法,也可以修改新增新的方法。

  • 相关阅读:
    Spring框架(一)-----核心理解
    vi常用编辑
    Avue使用renren-fast-vue开源脚手架工程(一)
    sqlServer触发器调用JavaWeb接口
    Linux常用别名设置
    油猴+IDM不限速下载
    Nginx配置静态web项目
    消息中间件rabbitMQ
    springboot自定义starter
    Nginx配置微信小程序 文件验证
  • 原文地址:https://www.cnblogs.com/wlyhy/p/10070107.html
Copyright © 2011-2022 走看看