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

    文章

    2957

    浏览量

    104535
  • python
    +关注

    关注

    55

    文章

    4779

    浏览量

    84440
收藏 人收藏

    评论

    相关推荐

    如何实现Python复制文件操作

    Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章中,你将会看到一些用 Python 实现文件复制的特殊方法。下面我们开始学习这九种不同的
    的头像 发表于 07-18 14:53 364次阅读

    ESP32下如何加自定义Python库?

    我看官方有提供Micropython的bin文件,但我想根据自己外设扩充一下Python库,这个应该从哪里入手? 之前做过RTT系统的python库扩充,RTT有提供Micropython的源代码,直接在里面加自己的库就行 ESP32下如何加自
    发表于 06-18 06:27

    Linux的declare/typeset命令介绍

    ,即使在函数内定义变量-i:声明整型变量-l:将变量值的小写字母变为小写-r:设置只读属性-t:设置变量跟踪属性,用于跟踪函数进行调试,对于变量没有特殊意义-u:变量值的大写字母变为大
    发表于 04-08 07:03

    基于Python的地图绘制教程

    本文将介绍通过Python绘制地形图的方法,所需第三方Python相关模块包括 rasterio、geopandas、cartopy 等,可通过 pip 等方式安装。
    的头像 发表于 02-26 09:53 1113次阅读
    基于<b class='flag-5'>Python</b>的地图绘制教程

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

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

    mapgis如何进行属性连接

    地理解和分析数据。 属性连接通常用于将一层中的字段信息与另一层中的对应字段信息进行匹配,从而将两个地图层的属性数据联系起来。通过属性连接,我们可以通过共同字段或属性来查找、筛选和分析数
    的头像 发表于 02-25 10:59 1559次阅读

    mapgis区属性赋参数

    赋值。本文将介绍MapGIS区属性赋参数功能,包括其定义、应用场景、操作步骤和特点等内容。 一、定义 MapGIS区属性赋参数是指在地理空间数据中,根据不同的区域特征和
    的头像 发表于 02-25 10:56 975次阅读

    mapgis如何给区属性赋值

    地进行数据分析和可视化。 在MapGIS中给区属性赋值有多种方法,下面将详细介绍其中的几种常用方法。 1.手动赋值 手动赋值是最直接和简单的方法。首先,在MapGIS中打开需要进行
    的头像 发表于 02-23 17:49 2063次阅读

    proteus属性赋值工具怎么用

    Proteus是一种电路设计和仿真软件,在进行电路设计和仿真时,属性赋值是非常重要的步骤。属性赋值工具可以帮助用户快速有效地配置电路元件的属性,从而实现电路的准确仿真。下面是关于Proteus
    的头像 发表于 02-23 17:19 4080次阅读

    OpenHarmony 定义扩展组件样式:@Extend 装饰器

    的私有属性和私有事件,以及预定义相同组件的 @Extend 的方法。   // @Extend(Text)可以支持Text的私有属性fontColor@Extend(Text) fun
    的头像 发表于 02-01 20:53 257次阅读

    如何解决Python爬虫中文乱码问题?Python爬虫中文乱码的解决方法

    如何解决Python爬虫中文乱码问题?Python爬虫中文乱码的解决方法Python爬虫过程中,遇到中文乱码问题是常见的情况。乱码问题主要是由于编码不一致所导致的,下面我将详细介绍
    的头像 发表于 01-12 15:11 2171次阅读

    placeholder属性和value属性的差别

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

    查看python安装路径的方法

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

    python shell怎么用

    Python Shell的使用方法、功能和一些常见的操作技巧。 Python Shell的启动: Python Shell可以通过在命令行中输入 p
    的头像 发表于 11-29 14:36 1098次阅读

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

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