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进行的跨平台仿真
快速物理光学软件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
磁编码器接口定义及标准接线方法
、接线规范统一,是保证磁编码器稳定输出位置信号、提高系统抗干扰能力的关键。本文从接口类型、电气特性、引脚定义、标准接线、工程规范、故障处理六个方面,系统阐述磁编码器接口定义与标准接线方法,为工程设计、现场安装与调试提供完整技术依
探索Atmel AT27LV010A:低功耗只读存储器的卓越之选
探索Atmel AT27LV010A:低功耗只读存储器的卓越之选 在电子设计的广阔领域中,寻找一款高性能、低功耗的只读存储器(ROM)至关重要。Atmel AT27LV010A就是这样一款引人注目
没有专利的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请求,通常
如何将设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中对于字符串的逆序输出的几种常用
python app不能运行怎么解决?
;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
发表于 08-06 06:27
Python的只读属性定义方法
评论