前言

学习自动化测试需要掌握一门开发语言,Java、python这两个可以选一个,这里呢笔者推荐的是python语言,因为它比较好学,那么今天呢,笔者就来给大家介绍一下python基础中的面对对象之类和对象,这个比较偏,但是又必须需要学习,废话呢笔者也不多说了,直接进入主题吧。

一、类和对象的概念

问题:什么是类?什么是实例对象?

类:是一类事物的抽象概念,不是真实存在的,描绘了该类事物共有的特征和行为

  • 例如:猫类、狗类、鸟类、车类等

实例对象:某类事物的具体个体,是该类事物的具体表现,它是真实存在的

  • 例如:“张三”是具体的某个“人“,”二哈“是具体的某个”狗“

二、类的定义

关键字:class

定义类的方法:

方式一:class 类名:

方式二:class 类名(object):

注意:方式一、方式二本质上是一样的,没有任何区别,只是写法不一样,他们都继承object这个基类。这里简单解释一下,在python3以前,不继承object类会少很多可操作对象,这些都是类中的高级特性,但在python3以后所有类都默认继承这个object基类了。

类名的命名规范:

1)遵循标识符的命名规范,即由字母、数字及下划线组成且不能以数字开头,不能使用关键字。

2)建议使用大驼峰命名法(每个单词的第一个字母大写,例如:MyClass、TestCase)

三、类属性和实例属性

1.类属性

什么是类属性?就是一类事物的共同特征,比如狗类,共同特征:叫声(汪汪汪)、四只脚等。

类属性:就是定义在类中的变量

类属性的访问:

类可以直接访问类属性

该类的实例对象也可以访问类属性

class Dog:  # 创建一个狗类cry = '汪汪汪'  # 类属性leg = '四只脚'  # 类属性wangcai = Dog()  # 创建一个实例对象,旺财是一只具体的狗
print('通过类名直接访问类属性:'.format(Dog.cry))  # 通过类名直接访问类属性
print('通过实例对象访问类属性:'.format(wangcai.cry))  # 通过实例对象访问类属性

运行结果:

C:\software\python\python.exe D:/learn/python18_http_request/exercise/test.py
通过类名直接访问类属性:
通过实例对象访问类属性:Process finished with exit code 0

2.实例属性

什么是实例属性?就是实例对象特有的属性,比如旺财是一个实例对象,他的名字叫旺财,这个名字就是一个实例属性

实例属性:实例对象特有的属性,添加实例属性的方式:

实例对象.属性 = 属性值

定义在类里的__init__方法里的变量

实例属性的访问:实例属性只有该实例对象自己能访问

class Dog:  # 创建一个狗类cry = '汪汪汪'  # 类属性leg = '四只脚'  # 类属性def __init__(self, name, age):"""实例对象初始化方法"""self.name = nameself.age = age# 创建一个实例对象,因为有初始化方法__init__,定义了两个必需参数,因此实例化对象时需要传两个参数
wangcai = Dog(name='旺财', age='4')   # wangcai = Dog('旺财', '4')  这种写法也可以,顺序对应参数即可
dog_name = wangcai.name
dog_age = wangcai.age
print('狗的名字:{}'.format(dog_name))  # 实例属性只能该实例对象访问
print('狗的年龄:{}'.format(dog_age))# 通过 实例对象.属性 = 属性值 再添加一个实例属性
wangcai.skill = '爬树'
print(wangcai.skill)# print(Dog.name)     # 实例属性是不能通过类去访问的,会报错jojo = Dog('jojo', 3)   # 实例化对象,一只叫jojo的狗
dog_name2 = jojo.name   # jojo只能访问自己的属性,不能访问其他实例对象(旺财)的属性
print('狗的名字:{}'.format(dog_name2))

运行结果:

C:\software\python\python.exe D:/learn/python18_http_request/exercise/test.py
狗的名字:旺财
狗的年龄:4
爬树
狗的名字:jojoProcess finished with exit code 0

在上面例子中使用了一个__init__方法,这些是什么方法呢?被双下划线包起来的方法,是python中有特殊语义的方法,也叫魔术方法,注意自定义方法时不要用这个格式命名。魔术方法不需要手动调用,在指定的条件下会自动触发,而这个__init__方法是在创建实例对象时就会自动触发。

3.关于self的理解

细心的你是不是发现了?在上面的例子,类里的init方法还有一个参数self,self是什么?有什么作用?

self可以理解为自己,即实例对象本身,哪个实例对象去调用,这个self就指向哪个实例对象,python解释器会把这个实例对象作为第一个参数传给self。这样是不是就能解释为什么实例属性只能该实例对象去访问呢。如果觉得有点绕,多理解几遍,多敲几遍吧!

四、实例方法

1.实例方法的定义

  • 实例方法直接定义在类中
  • 实例方法的第一个参数为self(这个参数必须要写)

2.实例方法的访问

  • 通过实例对象直接调用,该类的实例对象都可以访问,访问实例方法时会自动将实例对象本身作为第一个参数传给self接收
  • 通过类调用实例方法时,要传递一个self参数,即传递一个实例对象(很少用这种方法)
class Dog:  # 创建一个狗类cry = '汪汪汪'  # 类属性leg = '四只脚'  # 类属性def __init__(self, name, age):"""实例对象初始化方法"""self.name = nameself.age = agedef skill(self):sk1 = '爬树'  # 这里定义的只是一个方法里的变量,其他方法是无法调用的print('技能1:{}'.format(sk1))def skill2(self, sk2):self.sk2 = sk2  # 接收参数sk2,这里为什么要用self.去接收?因为这样相当于定义了一个实例属性,self就是指向实例对象print('技能2:{}'.format(self.sk2))def skill3(self):print('技能3:{}'.format(self.sk2))    # 这里访问self.sk2就能访问print('技能4:{}'.format(sk1))     # 这里访问sk1会报错,找不到wangcai = Dog(name='旺财', age='4')  # wangcai = Dog('旺财', '4')  这种写法也可以,顺序对应参数即可
dog_name = wangcai.name
dog_age = wangcai.age
print('狗的名字:{}'.format(dog_name))  # 实例属性只能该实例对象访问
print('狗的年龄:{}'.format(dog_age))wangcai.skill()  # 通过实例对象直接调用实例方法
wangcai.skill2('抓老鼠')  # 调用实例方法,该实例方法定义了一个必须参数
wangcai.skill3()

运行结果:

C:\software\python\python.exe D:/learn/python18_http_request/exercise/test.py
Traceback (most recent call last):
狗的名字:旺财File "D:/learn/python18_http_request/exercise/test.py", line 31, in <module>
狗的年龄:4
技能1:爬树
技能2:抓老鼠
技能3:抓老鼠wangcai.skill3()File "D:/learn/python18_http_request/exercise/test.py", line 20, in skill3print('技能4:{}'.format(sk1))     # 这里访问sk1会报错,找不到
NameError: name 'sk1' is not definedProcess finished with exit code 1

下面演示一个通过类访问实例方法(了解即可):

class Dog:  # 创建一个狗类cry = '汪汪汪'  # 类属性leg = '四只脚'  # 类属性def __init__(self, name, age):"""实例对象初始化方法"""self.name = nameself.age = agedef skill(self):sk1 = '爬树'  # 这里定义的只是一个方法里的变量,其他方法是无法调用的print('技能1:{}'.format(sk1))def skill2(self, sk2):self.sk2 = sk2  # 接收参数sk2,这里为什么要用self.去接收?因为这样相当于定义了一个实例属性print('技能2:{}'.format(self.sk2))wangcai = Dog(name='旺财', age='4')  # wangcai = Dog('旺财', '4')  这种写法也可以,顺序对应参数即可
dog_name = wangcai.name
dog_age = wangcai.age
print('狗的名字:{}'.format(dog_name))  # 实例属性只能该实例对象访问
print('狗的年龄:{}'.format(dog_age))# 通过类调用实例方法:要传递一个self参数,即传递一个实例对象
Dog.skill(wangcai)  # 传递一个实例对象
Dog.skill2(wangcai, '抓老鼠')  # 传递完实例对象再传方法里的必需参数

运行结果:

C:\software\python\python.exe D:/learn/python18_http_request/exercise/test.py
狗的名字:旺财
狗的年龄:4
技能1:爬树
技能2:抓老鼠Process finished with exit code 0

总结

文章笔者就写到这里了,看到这里还有不理解的小伙伴可以在文章下面留言讨论,也希望这篇文章能够给到小伙伴们带来一定的帮助,看到这里喜欢的小伙伴可以动动发财的小手给笔者一个一键三连哟。

自动化测试之python基础什么是面对对象之类和对象相关推荐

  1. 全栈自动化测试之python基础基本数据类型数值类型及序列类型

    文章末尾给大家留了大量的福利 前言 大家都知道学习软件测试需要必须要掌握一门开发语言,对于测试小白来说我们都是推荐python进行学习,因为比较简单,那么今天笔者想给大家唠唠python语言的基本数据 ...

  2. 自动化测试之 web - 基础篇

    Web自动化测试,基于python+selenium+pytest 一.环境准备 1.1 驱动安装 1.2 selenium 安装 1.3 chrome 启动参数( 以下皆以chrome浏览器作为举例 ...

  3. 第4章 基础知识进阶 第4.1节 Python基础概念之迭代、可迭代对象、迭代器

    第四章 基础知识进阶 第十七节 迭代.可迭代对象.迭代器 一.    引言 本来计划讲完元组和字典后就讲列表解析和字典解析,但要理解列表解析和字典解析,就需要掌握Python的高级的类型迭代器,因此本 ...

  4. Python自动化办公-Python基础教程

    免费学习Python自动化办公教学就在讯飞AI大学堂在线平台 "课程介绍" 6小时的工作10分钟完成,0基础0门槛的Python自动化办公课程 0门槛0基础的自动化办公课程 课程适 ...

  5. python基础(14)之 类和对象

    目录 Python类和对象 一.创建类 二.创建对象 三.init() 函数 四.对象方法 五.自参数 六.对象及其属性更改 七.pass语句 Python类和对象 Python 类/对象.Pytho ...

  6. Python基础篇(六)-- 类和对象

    Python语言在设计之初,就定位为一门面向对象的编程语言,而面向对象编程(Object-oriented Programming,简称 OOP),是一种封装代码的方法.比较正式的说法,"把 ...

  7. 自动化测试之Python+selenium

    Selenium 1.什么是自动化测试? 通俗定义:编程测试,编写一段程序来测试另外一个程序,即将测试任务交给计算机来完成. 广义定义:所有需要借助于工具进行辅助测试的方法,都可以称之为自动化测试. ...

  8. 自动化之python基础,0基础手把手教学,最细的教程通俗易懂

    失败只有一种,那就是半途而废!!! 目录 一.变量 二.python数据类型 1.number(数字) 数字类型的转换 数学运算 2.字符串 字符串的运算 3.列表 列表的运算 4.元组 5.集合 三 ...

  9. python日程提醒小程序_小程序自动化测试之python版

    01 介绍 minium是微信官方提供的自动化测试框架,支持Python和JavaScript两种语言.根据官方文档介绍,它的特点如下: ·支持一套脚本,iOS & Android & ...

最新文章

  1. GRE作文用AI打分,已经20周年了:AI给中国考生的分数,远高于人类打分
  2. NVisionXR_iOS教程二 —— 创建控制器和Vuforia对象
  3. python怎么写文件-Python 读写文件
  4. 编程软件python中的if用法-总结Python编程中函数的使用要点
  5. yolo_model to output理解
  6. 【Cocosd2d实例教程二】地图编辑器Tiled的安装使用
  7. 释疑のABAP输入框字符自动变成大写问题
  8. 计算机网络-基本概念(6)【网络层】-某PN和NAT
  9. centos压缩和解压缩
  10. 值传递与引用传递区别,具体表现
  11. 畅通工程(hdu1863)并查集
  12. atitit.nfc 身份证 银行卡 芯片卡 解决方案 attilax总结
  13. 【Scratch案例教学】scratch手把手教小朋友制作飞机大战、空中格斗、星际争霸等超酷游戏
  14. java移位操作示例
  15. 手动制作一个QQ群机器人
  16. uniapp H5 调用高德地图导航
  17. udc分类号查询 计算机技术,论文的分类号和udc_udc_论文分类号查询系统
  18. 计算机英语期末试题,计算机英语期末考试试题
  19. js 类似发微博或者微信朋友圈的时间显示 刚刚 几天前
  20. Kotlin学习笔记(十一)Sealed类和Sealed接口

热门文章

  1. Unity SRP世界空间重建
  2. 2023年湖北住建厅八大员各岗位题库精准小题库-启程别
  3. Vue中常用的内置指令及自定义指令
  4. python读取游戏数据_一个python简单文字游戏里的数据征集
  5. 远翔升压FP5217。内置MOS大瓦数升压芯片
  6. day30Node.js web模块:服务端与客户端、互联网传输协议、
  7. Windows OS中关闭445 Port
  8. web前端培训哪家好
  9. 机器学习-04-Gradient Descent(梯度下降法)
  10. 在“PS设计精讲精练”一课中的学习收获(4)