软件测试/测试开发丨Python 封装 学习笔记

封装的概念

  • 封装(Encapsulation

    • 隐藏:属性和实现细节,不允许外部直接访问
    • 暴露:公开方法,实现对内部信息的操作和访问

封装的作用

  • 限制安全的访问和操作,提高数据安全性
  • 可进行数据检查,从而有利于保证对象信息的完整性

封装的实现:隐藏

  • 保护属性:_属性名

  • 私有属性:__属性名

    • 被视作 _类名__属性名
class Account:# 普通属性bank = "BOC"# 内部属性_username = "Hogwarts"# 私有属性__password = "888"# 通过类名访问类属性
print(Account.bank)  # 将会打印 BOC
print(Account._username)  # 将会打印 Hogwarts
print(Account.__password)  # 将会引发 AttributeErrorprint(Account.__dict__)# 实例化
obj = Account()# 实例访问类属性
print(obj.bank)  # 将会打印 BOC
print(obj._username)  # 将会打印 Hogwarts
print(obj.__username)  # 将会引发AttributeError

封装的实现:暴露

  • 提供数据访问功能(getter

    • 计算属性
    • 语法:使用@property装饰器
    • 调用:实例.方法名
class Account:# 普通属性bank = "BOC"# 内部属性_username = "Hogwarts"# 私有属性__password = "888"@propertydef password(self):return self.__password# 实例化对象
obj = Account()# 访问实例的私有属性
print(obj.password)  # 将会打印 888

封装的实现:暴露

  • 提供数据操作功能(setter

    • 语法:使用@计算属性名.setter装饰器
    • 调用:实例.方法名
class Account:# 普通属性bank = "BOC"# 内部属性_username = "Hogwarts"# 私有属性__password = "888"@propertydef password(self):return self.__password@password.setterdef password(self, value):# 增加数据的校验if len(value) >= 8:self.__password = valueelse:print("密码长度最少要有8位!")# 实例化对象
obj = Account()# 修改私有属性(满足校验条件)
obj.password = "hogwarts666"  # 修改成功
print(obj.password)  # 将会打印 hogwarts666# 修改私有属性(不满足校验条件)
obj.password = "123"  # 修改不会生效
print(obj.password)  # 将会打印 888

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

『番外篇九』SwiftUI 实战:打造一款“五脏俱全”的网络图片显示 App(上)

概览 俗话说得好:“读书破万卷,下笔如有神”。不过如果把这句话放到编程的学习上可就不那么贴切了。 要想熟练掌握一门编程语言,光看书是绝对不够的。我们还需尽可能的多撸码、早撸码,撸到无路可退、海枯石烂才有可能一窥门径。 在本篇和续篇博文中,我们将和小伙伴们一起…

7.优化前后端交互的秘诀

注释规约 【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用/*内容/格式,不得使用 // xxx 方式。 说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释;在 I…

c++_09_继承

1 继承 C的继承是弱继承 继承的语法: class 子类 : 继承方式1 基类1, 继承方式2 基类2, ... { ... }; 继承方式: 共有继承 public 保护继承 protected 私有继承 private 2 继承的基本属性(3种继承方式均有) 继承所…

Javaweb之JDBC的详细解析

2. JDBC介绍(了解) 2.1 介绍 通过Mybatis的快速入门,我们明白了,通过Mybatis可以很方便的进行数据库的访问操作。但是大家要明白,其实java语言操作数据库呢,只能通过一种方式:使用sun公司提供的 JDBC 规范。 Mybatis…

从 MySQL 的事务 到 锁机制 再到 MVCC

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、事务 1.1 含义 1.2 ACID 二、锁机制 2.1 锁分类 2.2 隔离级别 三、MVCC 3.1 介绍 3.2 隔离级别 3.3 原理 四、总结 前…

Impala中kudu基础理论详解(超详细)

文章目录 前言一、概述1. Impala简介2. kudu简介3. kudu架构(1) Master节点(2) Tablet服务器(TServer)(3) 表(Table)(4) 数据模型 4. kudu特性与优势(1) 快速随机访问(2) 列式存储与压缩(3) 数据一致性保证 5. kudu应用场景6. Kud…

鸟瞰uml(中)

21.依赖和关联之间的区别 依赖(Dependency): 依赖关系是一种较弱的关系,它表示一个类在某些条件下使用了另一个类。一个类的变化可以影响到依赖它的类,但不必须反过来,即依赖关系是一个单向的。依赖关系通…

【2023年度总结】 何其有幸 年岁并进 一元复始 万象更新

🌙 新年将至,万物更新,旧疾当愈。 今年极度焦虑。发生太多事情,做出很多改变。 自律。早起、拍照、运动、读书、学习、认识了很多厉害的朋友,尝试影响周围的人。这是我生活正向能量的来源。 学习。今年依然是把大量…

C#上位机与欧姆龙PLC的通信06---- HostLink协议(FINS版)

1、介绍 对于上位机开发来说,欧姆龙PLC支持的主要的协议有Hostlink协议,FinsTcp/Udp协议,EtherNetIP协议,本项目使用Hostlink协议。 Hostlink协议是欧姆龙PLC与上位机链接的公开协议。上位机通过发送Hostlink命令,可…

golang的大杀器协程goroutine

在Golang中,协程(Goroutine)是轻量级的执行单元,用于实现并发编程。它是Golang语言的重要组成部分,提供了简洁、高效的方式来处理并发任务。 特点: 1)轻量级:Go语言的协程是轻量级…

Golang leetcode206 翻转链表 迭代 递归 双指针

文章目录 翻转链表 leetcode206题解第一版 直接建立新的链表双指针迭代递归法 翻转链表 leetcode206 至此走到这里,我们对于链表的结构应当已经比较熟悉,下面的就是敢于操作 题解第一版 直接建立新的链表 时间复杂度太高 // 初始方法,建立…

简单搭建 SSM 项目实现登录

目录 项目简介项目层级介绍,导入依赖添加配置业务逻辑实现前端 JSP 页面实现 项目简介 SSM(Spring、Spring MVC、MyBatis)框架,是一种 Java Web 应用程序开发框架的集合,可以帮助开发者快速搭建 Java Web 应用程序。想…

React16源码: Suspense与lazy源码实现

Suspense 与 lazy 1 &#xff09;概述 Suspense 是在 react16.6 提供的新 feature用于加载的缓冲的内置组件 2 &#xff09;示例程序 lazy.js // lazy.js import React from react export default () > <p>Lazy Comp</p>主程序 import React, { Suspense, …

ARM AArch64的虚拟化(virtualization)详解(上)

目录 一、概述 开始之前 二、虚拟化介绍 为什么虚拟化很重要

用队列实现栈(JAVA)

仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() …

【MySQL】查看表的信息相关命令

文章目录 【MySQL】查看表的信息相关命令查看表的信息相关命令例 【免责声明】文章仅供学习交流&#xff0c;观点代表个人&#xff0c;与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) 【MySQL】查看表的信息相关命令 在MySQL中&#xff0c;可以使用以下语句来查看表的信…

python实现Ethernet/IP协议的客户端(二)

Ethernet/IP是一种工业自动化领域中常用的网络通信协议&#xff0c;它是基于标准以太网技术的应用层协议。作为工业领域的通信协议之一&#xff0c;Ethernet/IP 提供了一种在工业自动化设备之间实现通信和数据交换的标准化方法。python要实现Ethernet/IP的客户端&#xff0c;可…

【Linux】socket基础API

目录 1. 创建socket&#xff08;TCP/UDP&#xff0c;客户端服务器&#xff09; 1.1 第一个参数——domain 1.2 第二个参数——type 1.3 第三个参数——protocol 2. 绑定socket地址&#xff08;TCP/UDP&#xff0c;服务器&#xff09; 2.1 字节序及转换函数 2.2 IP地址及…

消融实验(ablation study)——全网最全解读

消融实验&#xff08;ablation study&#xff09; 是什么优势与劣势案例总结 是什么 消融实验是一种科学研究方法&#xff0c;用于确定一个条件或参数对结果的影响程度。当研究者提出了一个新的方案或方法时&#xff0c;消融实验通过逐一控制一个条件或参数&#xff0c;来观察…

6个火爆全网的AI开源项目,用上月10万+

标题月10万可能说的有点夸张和含糊&#xff0c;10万具体指的是你可以利用这些开源项目实现&#xff1a; 访问量10万 收入10万 用户10万 …… 开源项目只是免费的工具&#xff0c;具体怎么实现还需要你根据自己需求去深入运营。这里只是给你推荐一些比较热门的开源项目&…