【测试开发学习历程】python面向对象

news2025/6/24 14:56:10

1 面向对象的基本概念

  • 面向对象:是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

  • 怎么理解面向对象?

    面向对象是一种编程思想,就是把要解决的问题抽象成一个一个的类,在类里面定义属性和方法(这个过程叫封装),在使用的时候创建类的对象来调用这些属性和方法,解决具体的问题

  • 类class和对象object:

    类class:类是抽象的,类具有事物的描述(属性,静态的特征)和操作(方法,动态的特征);比如学生类,它具备的属性有姓名、年龄、身高、体重等,它具备的方法有学习、吃饭、睡觉、打闹等等。

    对象object:对象是具体的事物,它具有特定事物的描述和操作,类相当于一个模板,对象就是根据这个模板创建出来的具体个体。

    分析以下描述中的类和对象?

    我有一部手机,品牌是华为,型号是Mate50 Pro保时捷,颜色是墨蓝瓷,容量是512G,买它花了我15000块钱,这部手机可以打电话,刷抖音,还能吃鸡。

我还有部手机,品牌是小米,型号是xxx

我:对象;

手机:类;

这一部手机:对象;

  • 属性

    • 品牌:属性;华为:属性的参数(品牌=华为);

    • 型号:属性;Mate50 Pro保时捷:属性的参数;

    • 颜色:属性;墨蓝瓷是属性对应的值

      • 容量:属性;512G是属性对应的值

    • 方法

      • 买:方法;

      • 打电话:方法;

      • 刷抖音:方法;

      • 吃鸡:方法

    类:手机类 ----------> 创建出来的对象是:这是一部手机

    • 属性:品牌、型号、颜色、容量-------------->属性用变量来定义

    • 方法:买东西、打电话、刷抖音、吃鸡----------->方法用函数来定义

    怎么理解类和对象?类是一类事物的统称,相当于一个模板;对象是类的一个个体,通过类来创建对象,一个类可以创建多个对象

    根据类创建出来的对象,也具备类一样的属性和方法,可以根据类去创建多个对象。

    如图举例:

2 类的声明与实例化

类是对客观世界中事物得抽象描述,而对象是类实例化后的实体。

2.1 类的声明

  • 使用class关键字定义一个类,类名一般用大驼峰法表示,做到“见名思意”。比如DemoClass

  • 类的声明语法:

class 类名称:
	类的成员		#包括属性和方法
  • 举例:

    # 定义一个类
    class People:
        #类的属性:用变量来表示
        type="高等生物"
        #类的方法:用函数来表示,但注意方法和函数两个概念有区别
        def eat(self):
            return "用筷子吃饭!"

2.2 属性和方法

  • 属性和方法统称类的成员。

    1. 属性:类的静态特征叫属性,比如学生类的姓名、性别、年龄等特征就是静态特征,用变量来表示;

    2. 方法:类的动态特征叫方法,比如学生类的吃饭、睡觉、吃鸡等特征就是动态特征,用函数来表示;

  • 举例:

    # 定义一个类
    class Students():
        #类的属性:用变量来表示
        type="学生"
        #类的方法:用函数来表示,但注意方法和函数两个概念有区别
        def study(self):
            return "学习软件测试技术!"

2.3 类的实例化(创建对象)

  • 根据类创建对象的过程,就是类的实例化;一个类可以创建多个对象;创建的对象带有类的属性和方法。

  • 变量 = 类()

    # 定义一个类
    class Students:
        #类的属性:用变量来表示
        type="学生"
        #类的方法:用函数来表示,但注意方法和函数两个概念有区别
        def study(self):
            return "学习软件测试技术!"
    #实例化对象
    Students()
    print(id(Students()))
    
    #实例化一个对象,并赋值给变量stu1,那么stu1就相当于对象的引用
    stu1=Students()
    print(id(stu1))
    print(id(stu1))
    #实例化另一个对象
    stu2=Students()
    print(id(stu2))

2.4 属性和方法的调用

  • 因为类的对象有类的所有属性和方法,所以可以通过对象来调用类的属性和方法,调用的语法是:

    • 对象.属性

    • 对象.方法

# 定义一个类
class Students():
    #类的属性:用变量来表示
    type="学生"
    #类的方法:用函数来表示,但注意方法和函数两个概念有区别
    def study(self):
        return "学习软件测试技术!"
#实例化一个对象
stu1=Students()
#调用属性
print(stu1.type)
#调用方法
print(stu1.study())

2.5 对self的理解

方法中至少有1个参数self,并且self形参必须在第一个位置,但调用方法时又不需要给self参数传参。self表示对象本身,哪个对象调用方法,self就表示哪个对象。

# 定义一个类
class Students():
    # 类的方法:用函数来表示,但注意方法和函数两个概念有区别
    def change_type(self,type):
        # 如下表示调用对象的type属性进行操作,通过self.type实现调用
        self.type=type
        # 输出self
        print("self:",self)
        return self.type
# 实例化一个对象
stu1=Students()
# 调用change_type()方法,此时change_type()方法在执行的时候self对应的就是stu1这个对象
print(stu1.change_type("小学生"))
# 实例化一个对象
stu2=Students()
# 调用change_type()方法,此时change_type()方法在执行的时候self对应的就是stu2这个对象
print(stu2.change_type("中学生"))
# 输出stu2对象,此时可以看到对应的内存地址与self的值一样
print(stu2)

2.6 构造方法和析构方法

魔法方法:在Python中,所有以__双下划线包起来的方法,都统称为“Magic Method”,中文称『魔术方法』,例如类的初始化方法 __init__ 。这里介绍两个魔法方法:__init__()__del__()

构造方法:__init__()

  • __init__是构造方法,在声明类的时候构造方法是可选的(也叫魔法方法——python自带的方法)

  • __init__在类中的作用是:初始化对象

  • 当类中没有显式地声明构造方法的时候,系统会使用一个默认的不带参的构造方法来实现对象的创建,当我们需要对对象初始化的时候,就可以显式地声明一个带参(也可以不带参)的构造方法。

析构方法:__del__()

  • __del__()是析构方法,作用是在一个对象调用完成后,会将对象释放掉,不再使用

# 定义一个类
class Students():
    # 类的方法:用函数来表示,但注意方法和函数两个概念有区别
    def change_type(self,type):
        # 如下表示调用对象的type属性进行操作,通过self.type实现调用
        self.type=type
        # 输出self
        print("self:",self)
        return self.type
# 实例化一个对象
stu1=Students()
# 调用change_type()方法,此时change_type()方法在执行的时候self对应的就是stu1这个对象
print(stu1.change_type("小学生"))
# 实例化一个对象
stu2=Students()
# 调用change_type()方法,此时change_type()方法在执行的时候self对应的就是stu2这个对象
print(stu2.change_type("中学生"))
# 输出stu2对象,此时可以看到对应的内存地址与self的值一样
print(stu2)

2.7 函数与方法的区别

函数和方法的区别:

  1. 函数定义在类外面,方法定义在类里面;

  2. 函数通过函数名(实参)来调用,方法一般通过对象.方法名(实参)来执行;

  3. 方法中必须有一个参数(通常命名为self)且这个参数一定在第一个位置,self表示对象本身,方法中的self参数在调用方法时不需要传实参;如果在函数声明时写一个叫self的形参,表示一个叫self的位置参数,在调用函数时必须对它传值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1584422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Substance 3D2024版 下载地址及安装教程

Substance 3D是Adobe公司推出的一套全面的3D设计和创作工具集合,用于创建高质量的3D资产、纹理和材质。 Substance 3D包括多个功能强大的软件和服务,如Substance 3D Painter、Substance 3D Designer和Substance 3D Sampler等。这些工具提供了广泛的功能…

了解大语言模型的参数高效微调(Parameter-Effcient Fine-Tuning)

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 大语言模型在众多应用领域实现了突破性的进步,显著提升了各种任务的完成度。然而,其庞大的规模也带来了高昂的计算成本。这些模型往往包含数十亿甚至上千亿参数,需要…

VRRP虚拟路由实验(华为)

思科设备参考:VRRP虚拟路由实验(思科) 一,技术简介 VRRP(Virtual Router Redundancy Protocol)是一种网络协议,用于实现路由器冗余,提高网络可靠性和容错能力。VRRP允许多台路由器…

vue商城项目vue shop vite

Vue Shop 是一个基于 Vue.js 框架构建的电子商务平台,它利用了 Vue 的响应式数据绑定和组件化的特点,为用户提供了一种快速开发和部署在线商店的解决方案。Vite 是一种现代化的前端构建工具,它提供了快速的冷启动、即时模块热更新&#xff08…

Elasticsearch:从 ES|QL 到 PHP 对象

作者:来自 Elastic Enrico Zimuel 从 elasticsearch-php v8.13.0 开始,你可以执行 ES|QL 查询并将结果映射到 stdClass 或自定义类的 PHP 对象。 ES|QL ES|QL 是 Elasticsearch 8.11.0 中引入的一种新的 Elasticsearch 查询语言。 目前,它在…

Understanding Diffusion Models: A Unified Perspective翻译和公式补充解读

“Understanding Diffusion Models: A Unified Perspective”是一篇写的非常好的扩散模型DDPM数学原理解读文章,这里翻译了一遍,对于一些细节补充记录一下,方便对照原文更好的理解。 这篇文章作者是Calvin Luo,来自Google Resear…

软考120-上午题-【软件工程】-软件开发模型02

一、演化模型 软件类似于其他复杂的系统,会随着时间的推移而演化。在开发过程中,常常会面临以下情形:商业和产品需求经常发生变化,直接导致最终产品难以实现;严格的交付时间使得开发团队不可能圆满地完成软件产品&…

AI论文速读 | TF-LLM:基于大语言模型可解释性的交通预测

论文标题: Explainable Traffic Flow Prediction with Large Language Models 作者:Xusen Guo, Qiming Zhang, Mingxing Peng, Meixin Zhu(朱美新)*, Hao (Frank)Yang(杨昊) 机构:香港科技大学(广州),约翰…

C# 操作PDF表单 - 创建、填写、删除PDF表单域

通常情况下,PDF文件是不可编辑的,但PDF表单提供了一些可编辑区域,允许用户填写和提交信息。PDF表单通常用于收集信息、反馈或进行在线申请,是许多行业中数据收集和交换的重要工具。 PDF表单可以包含各种类型的输入控件&#xff0…

【软件工程】UML用例图介绍和实例说明

文章目录 1、什么是用例图2、用例图的作用3、怎么画用例图4、三要素说明5、实例说明 1、什么是用例图 用例图(Use Case Diagram)是统一建模语言(UML)的一种图,它主要用于描述系统的功能和用户(参与者&…

elementui树形组件自定义高亮颜色

1、需求描述&#xff1a;点击按钮切换树形的章节&#xff0c;同时高亮 2、代码实现 1&#xff09;style样式添加 <style> .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {background-color: #81d3f8 !important; //高亮颜色colo…

微信小程序实现输入appid跳转其他小程序

前言 本文记录wx.navigateToMiniProgram打开另一个小程序API使用方法&#xff0c;并封装为组件。 wxml 部分 输入框用来记录appid&#xff0c;按钮用来查询并跳转。 <view class"container"><input class"input" placeholder"请输入要查…

Flutter第七弹 网格列表GridView

1) Flutter提供了网格列表&#xff0c;怎么设置列数&#xff1f; 2&#xff09;怎么初始化每个列表项Item&#xff1f; 一、GridView简介 Flutter也存在网格列表组建GridView&#xff0c;用于展示多行多列的列表。 1.1 GridView构建 采用GridView.count() 进行构建 1.2 Gr…

基于激光雷达点云(lidar)的目标检测方法之BEV

基于激光雷达点云&#xff08;lidar&#xff09;的目标检测方法之BEV 附赠自动驾驶学习资料和量产经验&#xff1a;链接 基于lidar的目标检测方法可以分成3个部分&#xff1a;lidar representation&#xff0c;network backbone&#xff0c;detection head&#xff0c;如下图所…

LeetCode - 1702. 修改后的最大二进制字符串

文章目录 解析AC CODE 题目链接&#xff1a;LeetCode - 1702. 修改后的最大二进制字符串 解析 详细题解&#xff1a;贪心&#xff0c;简洁写法&#xff08;Python/Java/C/Go/JS/Rust&#xff09; 思路很牛b。 简单来说我们需要想办法将0配对&#xff0c;将其变为10&#xff0…

3D室内装潢设计 Sweet Home 3D for Mac 中文直装版

Sweet Home 3D 是一款非常棒的家装辅助设计软件&#xff0c;支持包括中文在内的16中语言&#xff0c;它能帮您通过二维的家居平面图来设计和布置您的家具,还可以用三维的视角浏览整个装修布局的全貌。是一款操作起来简单方便&#xff0c;使用起来快捷、迅速&#xff0c;拥有超高…

【C++题解】1005 - 已知一个圆的半径,求解该圆的面积和周长

问题&#xff1a;1005 - 已知一个圆的半径&#xff0c;求解该圆的面积和周长 类型&#xff1a;基础问题、小数运算 题目描述&#xff1a; 已知一个圆的半径&#xff0c;求解该圆的面积和周长。 输入&#xff1a; 输入只有一行&#xff0c;只有 1 个整数。 输出&#xff1a…

图像生成:Pytorch实现一个简单的对抗生成网络模型

图像生成&#xff1a;Pytorch实现一个简单的对抗生成网络模型 前言相关介绍具体步骤准备并读取数据集定义生成器定义判别器定义损失函数定义优化器开始训练完整代码 训练生成的图片 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&…

RTSP/Onvif视频安防监控平台EasyNVR调用接口返回匿名用户名和密码的原因排查

视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入&#xff0c;并能对接入的视频流进行处理与多端分发&#xff0c;包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。平台拓展性强、支持二次开发与集成&#xff0c;可应用在景区、校园、水利、社区、工地等场…

坚持十天做完Python入门编程100题第三天加班

坚持十天做完Python入门编程100题第三天加班 第24题 扫描文件列表第25题 如何将字典转换成JSON并写入json文件&#xff1f;第26题 JSON转换成字典 第24题 扫描文件列表 如何扫描当前目录下的文件列表&#xff1f;解析&#xff1a;可以使用python内置的glob模块&#xff0c;用法…