网站可以制作ios怎么做微信里的网页网站链接

web/2025/9/26 15:13:21/文章来源:
网站可以制作ios,怎么做微信里的网页网站链接,怎么查个人名下是否注册公司,域名注册需要资料前言#xff1a; 在Python中#xff0c;property 是一种内置的装饰器#xff0c;它可以将类的方法转换为属性#xff0c;让你在不改变类接口的情况下添加额外的逻辑#xff0c;如输入值的验证、取值的计算等。property 可以作为一种方式让你的类接口保持清晰且易于使用。…前言 在Python中property 是一种内置的装饰器它可以将类的方法转换为属性让你在不改变类接口的情况下添加额外的逻辑如输入值的验证、取值的计算等。property 可以作为一种方式让你的类接口保持清晰且易于使用。 property 装饰器最常见的应用场景是将类的属性封装起来提供getter 和 setter 方法。这种方式的原因是你可以对属性赋值或者取值的代码进行控制而不是直接暴露属性。 property 通常会按照下面这样的模式使用 property 装饰一个方法定义属性名该方法为属性的 “getter” 方法。 property_name.setter 装饰一个方法将其定义为同名属性的 “setter” 方法。 property_name.deleter 装饰一个方法将其定义为同名属性的 “deleter” 方法。 1 应用场景 1.1 数据封装与保护 #!/usr/bin/env python # codingutf-8# Time : 2024/4/12 23:00 # Author : Summer # File : property_test.py # describe: class BankAccount:def __init__(self, initial_balance0.0):self._balance initial_balance # 初始化时将_balance设为初识余额propertydef balance(self):获取账户余额。return self._balancebalance.setterdef balance(self, value):设置账户余额拒绝直接设置。raise ValueError(Cannot directly set balance; please use deposit() or withdraw() methods.)def deposit(self, amount):存款方法只有金额是正数时才接受该交易。if amount 0:raise ValueError(Deposit amount must be positive.)self._balance amountdef withdraw(self, amount):取款方法只有余额充足且金额是正数时才接受该交易。if amount 0:raise ValueError(Withdrawal amount must be positive.)if amount self._balance:raise ValueError(Insufficient balance.)self._balance - amount# 使用 account BankAccount(1000) # 初始余额为1000 print(account.balance) # 输出余额account.deposit(500) # 存款500 print(account.balance) # 输出新余额try:account.balance 1500 # 尝试直接设置余额将引发异常 except ValueError as e:print(e)account.withdraw(200) # 取款200 print(account.balance) # 输出新余额try:account.withdraw(2000) # 尝试取款超过余额的金额将引发异常 except ValueError as e:print(e) 在这个例子中BankAccount类有一个私有属性_balance这意味着我们不想让外部直接修改它。我们提供了一个balance属性的getter来获取余额但我们故意没有提供setter去允许直接修改余额反而提供了deposit和withdraw方法来合理地修改余额。 当尝试直接设置account.balance时由于没有适当的setterproperty装饰器会引发一个ValueError异常。而当通过deposit和withdraw方法修改余额时可以在方法内部加入一定的验证逻辑比如只接受正数金额以及在取款时确保余额充足等。 通过这种方式我们可以确保账户余额不会被非法修改并且所有余额的变化都是通过安全的方法进行的。这就是使用property装饰器进行数据封装和保护的一个典型例子。 1.2 属性计算与逻辑处理 #!/usr/bin/env python # codingutf-8# Time : 2024/4/12 23:00 # Author : Summer # File : property_test.py # describe: class Rectangle:def __init__(self, width, height):self.width widthself.height heightpropertydef area(self):计算矩形的面积。return self.width * self.heightpropertydef perimeter(self):计算矩形的周长。return 2 * (self.width self.height)def resize(self, new_width, new_height):修改矩形的尺寸并自动更新计算属性。if new_width 0 or new_height 0:raise ValueError(Width and height must be positive.)self.width new_widthself.height new_height# 使用 rectangle Rectangle(3, 4) print(rectangle.area) # 输出面积12 print(rectangle.perimeter) # 输出周长14rectangle.resize(5, 6) print(rectangle.area) # 输出新面积30 print(rectangle.perimeter) # 输出新周长22try:rectangle.resize(-3, 6) except ValueError as e:print(e) # 尺寸必须为正数否则抛出异常 在这个例子中Rectangle类有width和height两个属性以及两个由这两个属性计算得出的只读属性area和perimeter。area属性返回矩形的面积perimeter属性返回矩形的周长。这两个属性都没有setter方法因为它们取决于width和height的值而不是直接设置的。 此外如果需要修改矩形的尺寸我们定义了一个名为resize的方法来同时更新width和height。这时由于area和perimeter的计算依赖于这两个属性它们也会自动更新因此我们无需手动同步这些计算属性。 通过使用property我们可以将计算和逻辑封装在类内部使得外部接口简洁并易于使用同时保持内部数据的一致性。这也使得我们能够在未来改变计算属性的内部实现而不影响调用方的代码。 1.3 高级getter和setter用法 #!/usr/bin/env python # codingutf-8# Time : 2024/4/12 23:00 # Author : Summer # File : property_test.py # describe: 使用property装饰器来定义属性的getter和setter方法并使用name.setter和price.setter来分别定义name和price属性的setter方法。在setter方法中我们检查传入的值的类型和值是否满足要求如果满足要求则将值赋给对应的属性否则引发异常。 class Product:def __init__(self, name, price):self.name nameself.price pricepropertydef name(self):return self._namename.setterdef name(self, value):if not isinstance(value, str):raise TypeError(Name must be a string)if not value.strip():raise ValueError(Name cannot be empty)self._name valuepropertydef price(self):return self._priceprice.setterdef price(self, value):if not isinstance(value, (int, float)):raise TypeError(Price must be a number)if value 0:raise ValueError(Price must be positive)self._price round(value, 2) # 注意在此处我们将价格四舍五入到两位小数# 使用 product Product(Coffee, 3.99) print(product.name) # 输出商品名称 print(product.price) # 输出商品价格try:product.name # 尝试设置一个空的商品名称将引发异常 except ValueError as e:print(e)try:product.price Free # 尝试设置一个非数字的价格将引发异常 except TypeError as e:print(e)product.price 5.98765 # 此时会自动四舍五入价格 print(product.price)在这个例子中Product类有两个属性name和price。每个属性都有一个getter和setter而setter方法中包含了输入的验证和转换。 对于name属性setter方法确保传入的值是字符串并且非空 对于price属性setter方法检查值是否是一个正数 (可以是整数或浮点数) 并且将其四舍五入到两位小数。 这些额外的验证确保了 商品名称不为空且为文本类型。 商品价格总是正数并且为了表示金钱它总是以两位小数显示。 通过在setter中包含这些逻辑我们可以确保Product类的实例始终维持在有效和合理的状态。如果尝试为这些属性赋值无效的数据类会引发异常阻止这样做并且可以为异常处理提供更多上下文。这种模式帮助保持数据的完整性并可以在属性被错误地设置时立即发现问题。 使用property的好处 property() 函数是 Python 中用于创建可管理属性的重要工具它可以实现数据封装、访问控制、属性计算等功能。 封装property允许开发者隐藏封装内部实现的细节提供一个干净的API。内部变量往往以下划线如_variable或__variable作为前缀命名表示它们不应直接访问。 数据验证通过使用setter方法开发者可以轻松加入数据验证逻辑确保类的状态总是有效的。例如可以检查属性值是否在预期范围内或者是否是正确的类型。 计算属性有些属性的值是基于对象的状态计算得到的。使用getter方法可以轻松地根据其他属性动态生成这些值。这些属性通常被认为是只读属性。 延迟计算和缓存惰性计算对于计算成本较高的属性值可以在首次访问时进行计算并缓存结果而不是在对象创建时就计算。这样做可以提高性能尤其是在该属性不一定会被每个对象使用的情况下。 观察者模式通过使用property装饰器的setter方法可以在一个属性被修改时触发某些额外的操作例如日志记录、通知或是其它形式的状态同步。 保持向后兼容性如果你的类曾经公开了一个属性并且你想添加一些对其访问控制而不破坏现有代码那么你可以将它转变为一个用property装饰器实现的方法这样做不需要修改对这个属性的引用。

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

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

相关文章

芜湖网站备案咨询电话网站首页幻灯片不显示

docker集群Docker非常适合在单个节点上运行隔离的容器。 但是,大多数软件系统都在多个节点上运行,因此,除了Docker之外,我们还需要某种方法来指定哪些容器应在哪些节点上运行。 我要解决的特定问题如下:我有两个Scala…

做企业专业网站一般要多少钱wordpress淘客插件破解

Playbook组成部分: task 任务:包含目标主机上执行的操作,使用模块定义这些操作,每个任务都是一个模块的调用Variables变量:存储和传递数据,变量可以自定义,可以在playbook当中定义为全局变量&a…

网站关键词排名快速提升做设计参考的网站

在数字化转型加速的今天,企业对订货系统的需求日益增长。一款优质的订货系统源码不仅能提升供应链效率,还能通过二次开发满足个性化业务需求。这里结合 “标准化、易扩展” 两大核心要求,为您精选三款主流订货系统源码,助您快速搭…

黑龙江网站建设佛山做网站制作公司

简介 五一小长假已经结束了,想必大家都吃饱喝足玩好了,那就继续学习吧。一天不学习,自己知道;两天不学习,对手知道;三天不学习,大家知道;一周不学习,智商输给猪。好了开个…

网页设计程序代码裤子seo优化标题

$.when(promise1, promise2) .done(function(args1, args2){console.log(args1 args2); }// 上述代码,等待promise1和promise2执行完,打印出(promise1和promise2)使用的参数 // 注:1.promise1和promise2是异步调用的函数,如ajax请求 // 2.如果执行promise1时用到了一个参数…

网页粒子效果网站建设一个网站需要

目录 题目要求 代码实现 题目要求 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 &#xf…

建立企业网站公司本地安装网站

目录 手动启动热部署 自动启动热部署 参与热部署监控的文件范围配置 关闭热部署 什么是热部署?简单说就是你程序改了,现在要重新启动服务器,嫌麻烦?不用重启,服务器会自己悄悄的把更新后的程序给重新加载一遍&…

暗网是什么网站大连网龙建站优化推广

移动操作系统更新管理是大多数移动设备管理(MDM)解决方案中提供的一项功能,它允许组织管理移动设备上的操作系统更新。MDM解决方案定期扫描设备以检查可用的移动操作系统更新,并根据配置的策略管理操作系统更新。操作系统更新管理…

怎么做网站申请广告建材招商网站

php 无限级分类 获取顶级分类ID,php顶级有这样一个表,id是分类的ID,name是分类名称,pid是上级分类的ID。现在有个分类ID,程序要找到它上级的上级的上级……分类的ID,简单说就是找出顶级分类的ID。比如“新鲜…

专做奢侈品品牌的网站网站关键词的确定

在.NET 4.0中,并行计算与多线程得到了一定程度的加强,这主要体现在并行对象Parallel,多线程Task,与PLinq。这里对这些相关的特性一起总结一下。 使用Thread方式的线程无疑是比较麻烦的,于是在这个版本中有了改善的版本…

食用油 网站 模板挖掘关键词工具

目录 1. 二叉树的前序遍历 (中,后序类似)2. 二叉树的最大深度3. 平衡二叉树4. 二叉树遍历 1. 二叉树的前序遍历 (中,后序类似) 这道题的意思是对二叉树进行前序遍历,把每个结点的值都存入一个数组中,并且返回这个数组。 思路&…

厦门网站设计推广公司ai特效字体网站

电话光端机顾名思义其实也是一种光端机,但是他不仅仅只能传输电话的光端机。它的用户接口类型多样(包括语音、数据、图象),均以小型模块化部件方式装配到母板上,各种用户模块可以混合装配,方便扩容及维护。…

洛阳做网站公司电话p2p借贷网站建设

[js] js源代码压缩都有哪些方法?它们的压缩原理分别是什么 方法 1.在线工具 2.webpack原理 1.删除注释 2.变量名方法名字符精减个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与…

网站美工培训青岛最新通知

URL:统一资源定位符,说白了,就是一个网络 通过URLConnection类可以连接到URL,然后通过URLConnection可以获取读数据的通道。非文本数据用字节流来读取。 读完之后写入本地即可。 public class test {public static void main(S…

在哪里买空间做网站中小企业网络营销论文

推荐一部好电影《致命魔术》。(此处为植入广告) 推荐理由:涉及人性。画面不错,剧情跌宕,亦魔亦幻(此处的”魔“为魔术的”魔“)。虽然女猪脚不尽如人意,但是男猪脚比较帅。而…

电商运营学习网站手机网站建设怎样

文章目录1.线性探测 哈希表代码2.拉链法 哈希表代码1. 散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。 2. 散列函数,设计的基…

上海定制网站开发营销推广小兵cms个人网站模板

首先是方法的参数是父类对象,传入子类对象是否可行 然后引出Parent p new Children(); 这句代码不是很理解,google的过程中引出向上转型 要理解向上转型又引出了动态绑定 从动态绑定又引出了静态绑定 程序绑定的概念: 绑定指的是一个方法的…

商城网站前台html模板如何在百度上发广告

在现代软件开发中,Git已经成为了版本控制系统的事实标准。无论是在个人项目还是大型企业级开发中,Git都是不可或缺的工具。因此,掌握Git的基本操作和高级特性对于软件开发者来说是非常重要的。以下是根据提供的文件内容,总结出的3…

网站模板和定制logo设计图片免费 图案 简约

在简要介绍了配置元数据并涵盖了我之前的文章《 在Spring Boot中使用配置元数据Pimp您的配置》中的基础知识之后,现在该看看如何进一步执行此步骤并进一步自定义配置。 在这篇文章中,我计划提出对配置属性的弃用,并讨论各种值提供程序&#x…

有个新网站专门做外贸的叫什么做网站学不需要做后台管理系统

UG装配约束命令在如下位置 首选接触:含接触和对齐,自动判断两种类型 接触:约束对象使其曲面法向在相反方向,并共面或共线 对齐:约束对象使其曲面法向在同一方向,并共面或共线 自动判断中心/轴&#xff1…