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

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# 输出selfprint("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# 输出selfprint("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.mzph.cn/news/806462.shtml

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

相关文章

ruoyi-nbcio-plus基于vue3的flowable的自定义业务提交申请组件的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

NAV2 ros galactic安装教程

sudo apt install ros-galactic-gazebo-* 这个必须下载 sudo apt-get install -y ros-galactic-rmw* 这个也是 使用操作系统中的包管理器安装 Nav2 包: sudo apt install ros-galactic-navigation2 sudo apt install ros-galactic-nav2-bringup安装Turtlebot 3 软件包: sudo…

Java快速入门系列-8(Web开发基础)

第8章 Web开发基础 8.1 Servlet与JSP8.1.1 Servlet简介8.1.2 JSP简介与使用8.1.3 Servlet与JSP协作8.2 Web服务器与Tomcat8.2.1 安装与配置Tomcat8.2.2 配置与管理Web应用8.3 MVC设计模式与Java Web应用8.3.1 MVC原理8.3.2 MVC在Java Web中的应用8.4 RESTful API设计与实现8.4.…

参数化方案对耦合模式影响试验

今天建立几个实验 HIST_model_test_lthf_tbf HIST_model_test_lthf_phiq HIST_model_test_sshf_tbf HIST_model_test_pblh_zli HIST_model_test_nocouple 十天过去了,这次运行的速度显然慢了好多,还没运行到2000年,没办法只能就地取材了。 我…

虚拟货币:数字金融时代的新工具

在数字化时代的到来之后,虚拟货币逐渐成为了一种广为人知的金融工具。虚拟货币是一种数字化的资产,它不像传统货币那样由政府或中央银行发行和监管。相反,虚拟货币通过密码学技术和分布式账本技术来实现去中心化的发行和交易。 虚拟货币的代…

xss跨站脚本攻击笔记

1 XSS跨站脚本攻击 1.1 xss跨站脚本攻击介绍 跨站脚本攻击英文全称为(Cross site Script)缩写为CSS,但是为了和层叠样式表(CascadingStyle Sheet)CSS区分开来,所以在安全领域跨站脚本攻击叫做XSS 1.2 xss跨战脚本攻击分类 第一种类型:反射型XSS 反射…

JVM规范中的运行时数据区

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏&#xff1a…

Qt 多窗体

前言 在 Qt编程中经常会遇到要在多个界面之间切换的情况,如从登录界面跳转到主界面,从主界面跳转到设置界面,再返回到主界面。我们将会用一个简单的示例来实现多窗体功能。 登录窗口 创建基类为QMainWindow,类名为LoginWin。再使用…

SpringBoot中的Redis的简单使用

在Spring Boot项目中使用Redis作为缓存、会话存储或分布式锁等组件,可以简化开发流程并充分利用Redis的高性能特性。以下是使用Spring Boot整合Redis的详细步骤: 1. 环境准备 确保开发环境中已安装: Java:用于编写和运行Spring…

特征工程(III)--特征构造

有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。 特征工程是数据分析…

comfyui便携版(绿色版)安装CLIP报错no module named ‘CLIP‘

具体说来就是其中的ImageRewardFilter需要用到。 要求得有CLIP 我们一般装模块都通过 pip install xxx这样的命令来装, 具体到comfyui便携版的模块安装上,一般用的是 python -m pip install xxx这样的形式(以模块化的形式安装到当前便携版的…

牛客 计算某字符出现次数

计算某字符出现次数 计算某字符出现次数 要点:1.大写字母ASCII码65开始,小写97开始; 2.或者用库函数tolower©:tolower©是一个标准库函数,它是C中库的一部分。这个函数接受一个字符(大写或小写&…

图书馆自习室|基于SSM的图书馆自习室座位预约小程序设计与实现(源码+数据库+文档)

图书馆自习室目录 基于SSM的图书馆自习室座位预约小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、小程序端: 2、后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&#xff1a…

设计模式(016)行为型之命令模式

命令模式,它将请求封装成一个对象,从而允许客户端参数化操作队列、记录请求日志、支持撤销操作等。在命令模式中,有四个核心角色:命令接口(Command)、具体命令(ConcreteCommand)、调…

MacOS下Qt 5开发环境安装与配置

最近笔者在MacOS中使用Qt Creator开发Qt程序时遇到了一些问题,在网上查了不少资料,都没有找到解决方案,只有自己进行研究摸索了,今天晚上终于将目前遇到的问题全部解决了,特记录下来分享给大家。 笔者使用的是MacOS 1…

【高校科研前沿】青藏高原所李新研究员为第一作者在REV GEOPHYS发表长篇综述:陆面数据同化–陆面过程研究中理论与数据的和弦

1.文章简介 论文名称:Land Data Assimilation: Harmoni-zing Theory and Data in Land Surface Process Studies 第一作者及通讯作者:李新研究员(兼通讯作者) 第一作者及通讯作者单位:中国科学院青藏高原研…

Golang ProtoBuf 初学者完整教程:安装

一、Protobuf 特点 更高效:使用二进制编码,相比XML/JSON更加高效 跨语言支持:Protobuf 在 .proto 定义需要处理的结构化数据,可以通过 protoc 工具,将 .proto 文件转换为 C、C、Golang、Java、Python 等多种语言的代…

在线客服系统:客服源码与在线客服搭建企业沟通的未来

随着互联网技术的飞速发展,在线客服系统已成为企业与客户沟通的重要桥梁。在这个信息爆炸的时代,客户对于服务质量的要求越来越高,企业如何通过高效的在线客服系统提升用户体验,增强客户满意度,已成为提升竞争力的关键…

JS阅读笔记

myweb3.html <video id"video" width"400" height"300" autoplay></video> <button id"capture-btn">拍摄图片</button> <canvas id"canvas" width"400" height"300">&…

win11-CapsWriter-Offline

https://github.com/Garonix/CapsWriter-Offline. 下载exe. git clone https://github.com/Garonix/CapsWriter-Offline/tree/docker-support 权重扔进models docker-compose up -d 打开exe