【测试开发学习历程】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…

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

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

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 第一作者及通讯作者:李新研究员(兼通讯作者) 第一作者及通讯作者单位:中国科学院青藏高原研…

网站SEO关键词规划时如何筛选出合适的关键词?

在网站SEO优化过程中,关键词布局是一个至关重要的环节。首先,我们需要确定核心关键词,然后通过各种策略和方法对关键词进行扩展。完成关键词扩展后,接下来的任务就是对这些扩展后的关键词进行筛选。那么,如何进行有效的…

模型训练基本概念-赛博炼丹

文章目录 拓展知识基础名词解释(语义库更新)机器学习任务流程模型训练基本流程模型训练详细流程正向传播与反向传播正向传播-求误差值反向传播-求参数值 学习率激活函数激活函数-为什么希望激活函数输出均值为0?激活函数 — softmax & ta…

机器学习和深度学习-- 李宏毅(笔记与个人理解)Day10

Day 10 Genaral GUidance training Loss 不够的case Loss on Testing data over fitting 为什么over fitting 留到下下周哦~~ 期待 solve CNN卷积神经网络 Bias-Conplexiy Trade off cross Validation how to split? N-fold Cross Validation mismatch 这节课总体听下来比较…

使用Docker部署开源项目FreeGPT35来免费调用ChatGPT3.5 API

Vercel部署FreeGPT35有严重限制,玩玩就好,真用还是得docker。 限制原因: Vercel的流式响应并不是一开始写流,客户端就能立刻收到响应流,而是先写到一个缓冲区,当流关闭才一股脑的流式响应回来(不是实时流) 因此导致: …

VideoGPT:Video Generation using VQ-VAE and Transformers

1.introduction 对于视频展示,选择哪种模型比较好?基于似然->transformers自回归。在没有空间和时间溶于的降维潜在空间中进行自回归建模是否优于在所有空间和时间像素级别上的建模?选择前者:自然图像和视频包括了大量的空间和…

【八股】AOP

AOP(Aspect Oriented Programming),面向切面编程,他是一种编程范式。 作用: 在不改变原始设计的的基础上对其进行功能增强。 几个基本概念: 连接点:所有的方法 切入点:追加功能的方法 通知:追加…

组合逻辑电路( Combinational Logic Circuit)知识点总结

目录 一、组合逻辑电路的基本设计方法 1.特点 2.逻辑功能的描述 3.组合逻辑电路的分析步骤 4.组合逻辑电路的设计方法 二、编码器的逻辑电路 1.普通编码器 2.优先编码器 三、二进制和二-十进制译码器 1.3-8译码器 2.二-十进制译码器 3.应用:逻辑函数发生…

基于GRU实现评论文本情感分析

一、问题建模 在线评论的细粒度情感分析对于深刻理解商家和用户、挖掘用户情感等方面有至关重要的价值,并且在互联网行业有极其广泛的应用,主要用于个性化推荐、智能搜索、产品反馈、业务安全等。此博文,共包含6大类20个细粒度要素的情感倾…