10天玩转Python第9天:python 面向对象 全面详解与代码示例

这篇具有很好参考价值的文章主要介绍了10天玩转Python第9天:python 面向对象 全面详解与代码示例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今日内容

  • 异常

  • 模块和包

    • 导入模块(导包)
    • if __name__ == "__main__":
  • Unitest 框架的学习

    • 了解, 基本组成

10天玩转Python第9天:python 面向对象 全面详解与代码示例,Python教程,# 带你10天玩转python,python,java,前端

异常

异常传递[了解]

 
 
 
异常传递是 Python 中已经实现好了,我们不需要操作, 我们知道异常会进行传递.
异常传递: 在函数嵌套调用的过程中, 被调用的函数 ,发生了异常,如果没有捕获,会将这个异常向外层传递. .... 如果传到最外层还没有捕获,才报错

模块和包

 
 
 
1. Python 源代码文件就是一个模块
2. 模块中定义的变量 函数 类,都可以让别人使用,同样,可以使用别人定义的(好处: 别人定义好的不需要我们再次书写,直接使用即可)
3. 想要使用 别人的模块中的内容工具(变量, 类, 函数), 必须先导入模块 才可以
4. 我们自己写的代码,想要作为模块使用,代码的名字需要满足标识符的规则(由数字,字母下划线组成,不能以数字开头)

导入模块的语法

方式一
 
 
 
import 模块名
# 使用模块中的内容
模块名.工具名
# 举例
import random
import json
random.randint(a, b)
json.load()
json.dump()
方式二
 
 
 
from 模块名 import 工具名
# 使用
工具名  # 如果是函数和类需要加括号
# 举例
from random import randint
from json import load, dump
randint(a, b)
load()
dump()

10天玩转Python第9天:python 面向对象 全面详解与代码示例,Python教程,# 带你10天玩转python,python,java,前端

方式三 [了解] 基本不用
 
 
 
from 模块名 import *  # 将模块中所有的内容都导入
from random import *
from json import *
randint(a, b)
load()
dump()
 
 
 
# 方式一 重点记忆
# import random
#
# print(random.randint(1, 20))
# 方式二, 重要快捷方式导包
# from random import randint
# from random import randint
#
# print(randint(1, 20))
# 方式三, 问题: 可能存在多个模块中有相同的名字的工具, 会产生冲突
from random import *
print(randint(1, 20))
 
 
 
对于导入的模块和工具可以使用 as 关键字给其起别名
注意: 如果起别名,原来的名字就不能用了, 只能使用别名

模块的查找顺序

 
 
 
在导入模块的时候 会先在当前目录中找模块, 如果找到,就直接使用
如果没有找到回去系统的目录中进行查找, 找到,直接使用
没有找到, 报错
注意点:
定义代码文件的时候, 你的代码名字不能和你要导入的模块名字相同

__name__ 的作用

 
 
 
1. 每个代码文件都是一个模块
2. 在导入模块的时候, 会执行模块中的代码(三种方法都会)
3. __name__ 变量
3.1 __name__ 变量 是 python 解释器自动维护的变量
3.2 __name__ 变量,如果代码是直接运行, 值是 "__main__"
3.3 __name__ 变量, 如果代码是被导入执行, 值是 模块名(即代码文件名)
在代码文件中, 在被导入时不想被执行的代码,可以写在 if __name__ == "__main__": 代码的缩进中

10天玩转Python第9天:python 面向对象 全面详解与代码示例,Python教程,# 带你10天玩转python,python,java,前端

10天玩转Python第9天:python 面向对象 全面详解与代码示例,Python教程,# 带你10天玩转python,python,java,前端

代码练习

 
 
 
1. 定义一个模块 tools.py 
2. 在模块中定义一个函数, func, 输出 '我是 tools 模块中的 funn 函数'
3. 在模块中定义一个类, Dog, 具有属性 name, age, 方法 play, 输出 'xx 在快乐的玩耍'
4. 新建一个代码文件, 调用 tools 模块中的 func 函数 并创建一个 Dog 类的对象, 调用 play 方法

10天玩转Python第9天:python 面向对象 全面详解与代码示例,Python教程,# 带你10天玩转python,python,java,前端

包(package)

 
 
 
在 Python 中, 包 是一个目录, 只不过在这个目录存在一个文件 __init__.py(可以是空的)
将功能相近或者相似的代码放在一起的.
--------
在 Python 中使用的时候,不需要可以是区分是包还是模块, 使用方式是一样的
random 模块 (单个代码文件)
json  包(目录)
unittest 包(目录)
1. import 包名
2. alt  回车 快捷导入

UnitTest框架

介绍

  • 框架

      
     
    说明:
    1. 框架英文单词framework 2. 为解决一类事情的功能集合
    > 需要按照框架的规定(套路) 去书写代码
  • 什么是UnitTest框架?

      
     
    概念:UnitTest是Python自带的一个单元测试框架,用它来做单元测试。
    ----
    自带的框架(官方): 不需要单外安装, 只要安装了 Python,就可以使用
    random, json, os, time
    第三方框架: 想要使用 需要先安装后使用(pytest)
    selenium , appium, requests 
    ----
    单元测试框架: 主要用来做单元测试, 一般单元测试是开发做的.
    对于测试来说, unittest 框架的作用是 自动化脚本(用例代码) 执行框架(使用 unittest 框架 来 管理 运行 多个测试用例的)
  • 为什么使用UnitTest框架?

      
     
    1. 能够组织多个用例去执行 
    2. 提供丰富的断言方法(让程序代码代替人工自动的判断预期结果和实际结果是否相符)
    3. 能够生成测试报告
  • UnitTest核心要素(unitest 的组成部分)

    1. TestCase(最核心的模块)

        
       
      TestCase(测试用例), 注意这个测试用例是 unittest 框架的组成部分, 不是手工和自动化中我们所说的用例(Test Case)
      主要作用: 每个 TestCase(测试用例) 都是一个代码文件,  在这个代码文件中  来书写 真正的用例代码
    2. TestSuite

        
       
      TestSuite(测试套件), 用来 管理 组装(打包)多个 TestCase(测试用例) 的
    3. TestRunner

        
       
      TestRunner(测试执行,测试运行),  用来 执行 TestSuite(测试套件)的
    4. TestLoader

        
       
      TestLoader(测试加载), 功能是对 TestSuite(测试套件) 功能的补充,
      管理 组装(打包)多个 TestCase(测试用例) 的
    5. Fixture

        
       
      Fixture(测试夹具), 书写在 TestCase(测试用例) 代码中, 是一个代码结构, 可以在每个方法执行前后都会执行的内容
      举例: 
      登录的测试用例, 每个用例中重复的代码就可以写在 Fixture 代码结构中, 只写一遍, 但每次用例方法的执行,都会执行 Fixture 中的代码
      1. 打开浏览器
      2. 输入网址

TestCase(测试用例)

 
 
 
1. 是一个代码文件, 在代码文件中 来书写真正的用例代码
2. 代码文件的名字必须按照标识符的规则来书写(可以将代码的作用在文件的开头使用注释说明)
  • 步骤

      
     
    1. 导包 (unittest)
    2. 自定义测试类
    3. 在测试类中书写测试方法
    4. 执行用例
  • 代码

      
     
    """
    代码的目的: 学习 TestCase(测试用例)模块的书写方法
    """
    # 1, 导包
    import unittest
    # 2, 自定义测试类, 需要继承 unittest 模块中的 TestCase 类即可
    class TestDemo(unittest.TestCase):
        # 3, 书写测试方法, 即 用例代码. 目前没有真正的用例代码, 使用 print 代替
        # 书写要求, 测试方法 必须以 test_ 开头(本质是以 test 开头)
        def test_method1(self):
            print('测试方法 1')
        def test_method2(self):
            print('测试方法 2')
    # 4, 执行用例(方法)
    # 4.1 将光标放在 类名的后边 运行, 会执行类中的所有的测试方法
    # 4.2 将光标放在 方法名的后边 运行, 只执行当前的方法
    问题一 代码文件的命名不规范
      
     
    1. 代码文件的名字以数字开头 
    2. 代码文件名字中有空格
    3. 代码文件名字有中文
    4. 其他的特殊符号
    (数字, 字母, 下划线组成, 不能以数字开头)
    10天玩转Python第9天:python 面向对象 全面详解与代码示例,Python教程,# 带你10天玩转python,python,java,前端
问题 2 代码运行没有结果
 
 
 
右键运行没有 unittests for 的提示, 出现的问题
解决方案:
方案1. 重新新建一个代码文件, 将写好的代码复制进去
方案2. 删除已有的运行方式

10天玩转Python第9天:python 面向对象 全面详解与代码示例,Python教程,# 带你10天玩转python,python,java,前端

问题 3 没有找到用例
 
 
 
测试方法中不是以 test_ 开头的, 或者单词写错了

TestSuite & TestRunner

 
 
 
TestSuite(测试套件): 管理 打包 组装 TestCase(测试用例) 文件的
TestRunner(测试执行): 执行 TestSuite(套件)
  • 步骤

      
     
    1. 导包(unittest)
    2. 实例化(创建对象)套件对象
    3. 使用套件对象添加用例方法
    4. 实例化运行对象
    5. 使用运行对象去执行套件对象
  • 代码

      
     
    TestSuite(测试套件): 是用来管理多个 TestCase(测试用例) 的,
    先创建多个 TestCase(测试用例) 文件
      
     
    """
    学习 TestSuite 和 TestRunner 的使用
    """
    # 1. 导包(unittest)
    import unittest
    from hm_07_testcase1 import TestDemo1
    from hm_07_testcase2 import TestDemo2
    # 2. 实例化(创建对象)套件对象,
    suite = unittest.TestSuite()
    # 3. 使用套件对象添加用例方法
    # 方式一, 套件对象.addTest(测试类名('方法名'))   # 建议测试类名和方法名直接去复制,不要手写
    suite.addTest(TestDemo1('test_method1'))
    suite.addTest(TestDemo1('test_method2'))
    suite.addTest(TestDemo2('test_method1'))
    suite.addTest(TestDemo2('test_method2'))
    # 4. 实例化运行对象
    runner = unittest.TextTestRunner()
    # 5. 使用运行对象去执行套件对象
    # 运行对象.run(套件对象)
    runner.run(suite)
      
     
    """
    学习 TestSuite 和 TestRunner 的使用
    """
    # 1. 导包(unittest)
    import unittest
    # 2. 实例化(创建对象)套件对象,
    from hm_07_testcase1 import TestDemo1
    from hm_07_testcase2 import TestDemo2
    suite = unittest.TestSuite()
    # 3. 使用套件对象添加用例方法
    # 方式二 将一个测试类中的所有方法进行添加
    # 套件对象.addTest(unittest.makeSuite(测试类名))
    # 缺点: makeSuite()  不会提示
    suite.addTest(unittest.makeSuite(TestDemo1))
    suite.addTest(unittest.makeSuite(TestDemo2))
    # 4. 实例化运行对象
    runner = unittest.TextTestRunner()
    # 5. 使用运行对象去执行套件对象
    # 运行对象.run(套件对象)
    runner.run(suite)

10天玩转Python第9天:python 面向对象 全面详解与代码示例,Python教程,# 带你10天玩转python,python,java,前端文章来源地址https://www.toymoban.com/news/detail-766461.html

练习

 
 
 
1. 在 tools 模块中定义 add 函数, 对两个数字进行求和计算
2. 书写 TestCase 代码对 add() 进行测试 
用例 1:  1, 2, 3
用例 2:  10, 20, 30
用例 3:  2, 3, 5
  • 用例代码
 
 
 
"""案例练习"""
# 1,导包
import unittest
from tools import add
# 2, 自定义测试类
class TestAdd(unittest.TestCase):
    # 3. 书写测试方法, 就是测试用例代码
    def test_method1(self):
        # 1, 2, 3 判断实际结果和预期结果是否相符
        if add(1, 2) == 3:
            print('测试通过')
        else:
            print('测试不通过')
    def test_method2(self):
        if add(10, 20) == 30:
            print('测试通过')
        else:
            print('测试不通过')
    def test_method3(self):
        # 1, 2, 3 判断实际结果和预期结果是否相符
        if add(2, 3) == 5:
            print('测试通过')
        else:
            print('测试不通过')
  • 套件和执行的代码
 
 
 
import unittest
# 实例化套件对象
from hm_08_test import TestAdd
suite = unittest.TestSuite()
# 添加测试方法
suite.addTest(unittest.makeSuite(TestAdd))
# 实例化执行对象
runner = unittest.TextTestRunner()
runner.run(suite)

到了这里,关于10天玩转Python第9天:python 面向对象 全面详解与代码示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python面向对象详解(非常详细)

    零基础一样学得会 👌🏻   干货满满不看后悔 👍👍👍 📝个人主页→数据挖掘博主ZTLJQ的主页 ​ 个人推荐python学习系列: ☄️爬虫JS逆向系列专栏 - 爬虫逆向教学 ☄️python系列专栏 - 从零开始学python 面向对象的概念和原理 🥇1、什么是面向对象编程? 🥇2、面向对象

    2024年02月16日
    浏览(35)
  • Python 面向对象编程:类、对象、初始化和方法详解

    Python 是一种面向对象的编程语言。在 Python 中,几乎所有东西都是对象,都具有其属性和方法。 类似于对象构造函数或用于创建对象的“蓝图”的类。 要创建一个类,请使用 class: 示例,创建一个名为 MyClass 的类,其中包含一个名为 x 的属性: 现在,我们可以使用名

    2024年02月08日
    浏览(58)
  • python 面向对象 对象

    类 构造函数 魔术方法 python中类中有内置方法,这些内置方法,成为魔术方法 魔术方法如下[常用]: init 构造函数 自动执行 str 字符串方法 lt 小于、大于符号比较 le 小于等于、大于等于符号比较 eq ==等于符号 面向对象的特点 封装 多态 继承 ##python中私有属性、私有方法,,

    2024年02月09日
    浏览(53)
  • Python基础之面向对象:8、面向对象之元类

    目录 面向对象之元类 一、什么是元类 二、元类推导流程 三、创建类的方式 方式一: 方式二: 四、元类定制类的产生行为 五、元类定制对象的产生行为 六、元类之双下new Python中一切皆为对象,对象是有类实例化生成; 类也是对象(类对象),生成类对象的类可称之为元

    2024年01月20日
    浏览(56)
  • 低代码如何玩转面向对象的类继承

    老铁们!要说Mendix 在低代码领域的过人之处,没两瓶白的再来几斤花生米是唠不完的。 话说“低代码,高逻辑”、“最接近高代码的低代码”、“高低结合”,大家也已耳熟能详。一个要登大雅之堂的产品从来没什么小秘密,无奈江湖险恶,各路玩家从没放弃调(mo)研(

    2024年02月02日
    浏览(35)
  • 【Python学习】Python学习20- 面向对象(2)

    目录 文章所属专区 Python学习 本章节主要说明Python的面向对象的处理。 通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类 语法: 1、如果在子类中需要父类的构造方法就需要显式的调用父类的构造方法,或者不重写父类的构造方法。详细说明可查看:

    2024年01月18日
    浏览(58)
  • 【Python学习】Python学习20- 面向对象(1)

    目录 文章所属专区 Python学习 本章节主要说明Python的面向对象的处理。Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方

    2024年01月16日
    浏览(57)
  • python 面向对象编程(2)

    前面我们介绍了 python 类和对象以及继承、私有权限,那么今天我们将来介绍 python面向对象 剩下的两大特性封装、多态,以及如何访问、修改类属性、类方法和静态方法的介绍。🚗🚗🚗 Python中的封装是一种面向对象编程的概念,它将数据和操作这些数据的方法封装到一个

    2024年02月16日
    浏览(54)
  • Python面向对象编程

    本文带领大家过一遍菜鸟学Python的面向对象的部分 类(Class):  用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量: 类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通

    2023年04月27日
    浏览(44)
  • python 面向对象编程

    大家好,前面我们学习了 python 的基础用法,那么从今天开始,我们将学习 python 的面向对象编程,那么什么叫做面向对象的编程呢? 面向对象编程是一种编程范式,它将数据和操作数据的方法封装在对象中,并通过对象之间的交互来实现程序的设计和实现。 在面向对象编程

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包