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
    +关注

    关注

    19

    文章

    2903

    浏览量

    102978
  • python
    +关注

    关注

    51

    文章

    4667

    浏览量

    83443
收藏 人收藏

    评论

    相关推荐

    arcgis中如何在属性表中选择多个属性

    在ArcGIS中,你可以通过多种方式来选择属性表中的多个属性。下面是一些常用的方法方法一:使用Select by Attributes工具 在ArcGIS的
    的头像 发表于 02-25 11:10 3740次阅读

    placeholder属性和value属性的差别

    重要性。 第一部分:理解placeholder属性 1.1 定义placeholder属性 placeholder属性是HTML中用于表单字段的属性
    的头像 发表于 11-30 10:13 436次阅读

    查看python安装路径的方法

    如何查看Python安装路径,以及各个操作系统下的细节和注意事项。 一、Windows操作系统下查看Python安装路径的方法 对于Windows操作系统,有多种方法可以查看
    的头像 发表于 11-29 14:54 987次阅读

    运行Python程序的几种常见方法

    Python是一种高级编程语言,具有简单易学,易于阅读和调试的特点。当你完成了一个Python程序之后,你需要运行它以检查程序是否按照预期工作。下面是运行Python程序的几种常见方法
    的头像 发表于 11-28 15:32 461次阅读

    复数中i在Python中如何定义

    复数中的虚数单位'i'在Python中可以通过使用cmath模块来定义和使用。cmath模块提供了处理复数的函数和常量。 在Python中,虚数单位'i'表示为1j。它是一个特殊的数值,并且可以
    的头像 发表于 11-22 09:40 1116次阅读

    python如何定义二维空数组

    Python中,可以通过使用列表嵌套的方式来定义二维空数组。具体步骤如下: Step 1: 创建一个空的二维列表 要创建一个空的二维数组,首先需要定义数组的行数和列数。我们可以使用两个变量来表示
    的头像 发表于 11-21 15:12 643次阅读

    python的insert方法

    insert()方法Python中的列表对象提供的一个方法,用于在指定位置插入一个元素。该方法的语法如下: list. insert ( index , obj) 其中,index表
    的头像 发表于 11-21 14:27 609次阅读

    python如何定义一个函数

    一、Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如 print
    的头像 发表于 11-14 11:26 411次阅读

    Ruby 与 Python之间的差异

    。 Ruby 则相反。在 Ruby 中, for 本身(通过 each )是对象的一个方法。调用者将 for 循环体传递给这个方法。 在 Python 的语言习惯中,对象模型服从于 for 循环。而在 Ruby
    的头像 发表于 10-30 11:50 328次阅读

    python定义函数与调用函数的顺序

    定义函数与调用函数的顺序 函数被定义后,本身是不会自动执行的,只有在被调用后,函数才会被执行,得到相应的结果。但是在 Python 中我们要注意一个关键点,就是Python不允许前向引
    的头像 发表于 10-04 17:17 567次阅读

    如何用Python生成自定义二维码

    MyQR是Python的一个库,它可以用来方便地生成艺术、自定义和极简QR码。MyQR可以生成黑白、彩色、GIF动图等多种样式的QR码。 安装MyQr pip install MyQr 1.生成普通
    的头像 发表于 09-12 17:11 593次阅读
    如何用<b class='flag-5'>Python</b>生成自<b class='flag-5'>定义</b>二维码

    添加自定义属性控制fridaserver启动和停止

    添加自定义属性控制fridaserver启动和停止
    的头像 发表于 08-09 10:08 848次阅读
    添加自<b class='flag-5'>定义</b><b class='flag-5'>属性</b>控制fridaserver启动和停止

    动态库封装成python模块的方法

    之前的文章 将静态库封装成 python 模块中讲解了如何将静态库封装成 python 模块,静态库封装相对来说还是有点复杂,今天来介绍下动态库封装成 python 模块的方法
    发表于 07-13 15:24 376次阅读

    用于只读高密度光盘的DPD信号检测方法

    摘要:提出了一种只读高密度光盘的DPD信号检测方法,阐述了DPD信号检测中均衡电路和相位检测器的原理和设计方法,并基于CPLD器件实现了光盘高频读出信号的相位差检测。实验结果表明,本文提出的
    发表于 06-29 17:07 0次下载

    介绍Python中文件创建与写入的基本方法

    Python 文件写入和创建是 Python 开发中必须掌握的技能之一。在本文中,我们将介绍 Python 中文件创建与写入的基本方法
    的头像 发表于 04-27 09:22 2868次阅读