0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python的只读属性定义方法

汽车玩家 来源:今日头条 作者:我爱学Python 2020-01-18 09:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Python是面向对象(OOP)的语言, 而且在OOP这条路上比Java走得更彻底, 因为在Python里, 一切皆对象, 包括int, float等基本数据类型.

在Java里, 若要为一个类定义只读的属性, 只需要将目标属性用private修饰, 然后只提供getter()而不提供setter(). 但Python没有private关键字, 如何定义只读属性呢? 有两种方法, 第一种跟Java类似, 通过定义私有属性实现. 第二种是通过__ setattr__.

通过私有属性

用私有属性+@property定义只读属性, 需要预先定义好属性名, 然后实现对应的getter方法.,如果对属性还不懂。

输出:

可以看出, 属性x是可读但不可写的.

通过 __ setattr__当我们调用obj.attr=value时发生了什么?

很简单, 调用了obj的__ setattr__方法. 可通过以下代码验证:

输出:

所以呢, 只需要在__ setattr__ 方法里挡一下, 就可以阻止属性值的设置, 可谓是釜底抽薪.

代码:

输出:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    20

    文章

    3006

    浏览量

    116828
  • python
    +关注

    关注

    58

    文章

    4884

    浏览量

    90300
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    定义卡片编辑组件

    定义卡片编辑页面从左到右分为功能区、预览画布区和属性配置区。 开发者可以拖动左边组件图标到中间画布区域,选中中间画布上某个组件时,右边会展示该组件的属性配置,修改属性配置可以实时在
    发表于 04-22 11:11

    使用Python/MyHDL创建自定义FPGA IP

    使用 Python/MyHDL 创建自定义 FPGA IP,与 Vivado 集成,并通过 PYNQ 进行控制——实现软件上的简单硬件设计。
    的头像 发表于 04-09 09:53 216次阅读
    使用<b class='flag-5'>Python</b>/MyHDL创建自<b class='flag-5'>定义</b>FPGA IP

    使用PYTHON进行的跨平台仿真

    快速物理光学软件VirtualLab Fusion以其“连接场求解器”方法而自豪,该方法将应用于不同组件上的专用电磁场求解器结合在一起,以实现整个系统的物理光学模拟。这种方法的逻辑扩展不仅是连接软件
    发表于 04-02 08:21

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    Python编辑器的用户: 请安装保存在文件requirements.txt中的所有软件包。最常见的方法之一是pip安装: pip install -r requirements.txt 配置路径 在VirtualLab Fusion中
    发表于 03-31 09:39

    [VirtualLab] 使用Python进行跨平台参数扫描

    ** 准备Python **配置路径 ** **在VirtualLab Fusion中定义一个光学设置 ** **保存光学设置并导出参数到一个XML文件 ** **运行模拟 ** 参数扫描——改变单个参数
    发表于 03-31 09:36

    磁编码器接口定义及标准接线方法

    、接线规范统一,是保证磁编码器稳定输出位置信号、提高系统抗干扰能力的关键。本文从接口类型、电气特性、引脚定义、标准接线、工程规范、故障处理六个方面,系统阐述磁编码器接口定义与标准接线方法,为工程设计、现场安装与调试提供完整技术依
    的头像 发表于 03-12 15:42 257次阅读

    探索Atmel AT27LV010A:低功耗只读存储器的卓越之选

    探索Atmel AT27LV010A:低功耗只读存储器的卓越之选 在电子设计的广阔领域中,寻找一款高性能、低功耗的只读存储器(ROM)至关重要。Atmel AT27LV010A就是这样一款引人注目
    的头像 发表于 01-31 17:05 830次阅读

    没有专利的opencv-python 版本

    所有 官方发布的 opencv-python 核心版本(无 contrib 扩展)都无专利风险——专利问题仅存在于 opencv-contrib-python 扩展模块中的少数算法(如早期 SIFT
    发表于 12-13 12:37

    堆栈的定义,堆栈的使用方法

    堆栈的定义 堆栈也是用户使用的存储器的一部分,用于存放临时性的数据和一些其他信息。堆栈段的定义语法如下: 堆栈名SEGMENTSTACK (堆栈内容) 堆栈名ENDS 语法解释: 堆栈
    发表于 11-21 06:49

    Python调用API教程

    两个不同系统之间的信息交互。在这篇文章中,我们将详细介绍Python调用API的方法和技巧。 一、用Requests库发送HTTP请求 使用Python调用API的第一步是发送HTTP请求,通常
    的头像 发表于 11-03 09:15 1174次阅读

    商品类目属性查询接口技术实现详解

    ​   一、接口核心功能 该接口用于查询电商系统中商品类目的属性信息,支持: 按类目ID查询属性集合 按属性类型过滤(关键属性$K$、销售属性
    的头像 发表于 10-11 15:43 563次阅读
    商品类目<b class='flag-5'>属性</b>查询接口技术实现详解

    如何将设USB存储设备设为只读

    rt thread 设USB存储设备设为只读方法,已经尝试了: 1、rt_device_register((rt_device_t)&_stm_udc, \"usbd
    发表于 09-17 07:21

    termux如何搭建python游戏

    termux如何搭建python游戏 Termux搭建Python游戏开发环境的完整指南 一、Termux基础环境准备 Termux是一款无需root即可在安卓设备上运行的Linux终端
    发表于 08-29 07:06

    Python中字符串逆序有几种方式,代码是什么

    对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作,毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了,今天总结了一下python中对于字符串的逆序输出的几种常用
    的头像 发表于 08-28 14:44 1263次阅读

    python app不能运行怎么解决?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    发表于 08-06 06:27