python的@property是python的一种装饰器,是用来修饰方法的。
1.修饰方法,是方法可以像属性一样访问

class DataSet(object):@propertydef method_with_property(self): ##含有@propertyreturn 15def method_without_property(self): ##不含@propertyreturn 15l = DataSet()
print(l.method_with_property) # 加了@property后,可以用调用属性的形式来调用方法,后面不需要加()。
print(l.method_without_property())  #没有加@property , 必须使用正常的调用方法的形式,即在后面加()

使用 @property 修饰了 method_with_property() 方法,这样就使得该方法变成了 method_with_property 属性的 getter 方法。需要注意的是,如果类中只包含该方法,那么 method_with_property 属性将是一个只读属性。

也就是说,在使用 DataSet 类时,无法对 method_with_property 属性重新赋值,运行代码会报错:

    class Rect:def __init__(self,area):self.__area = area@propertydef area(self):return self.__area@area.setterdef area(self, value):self.__area = valuerect = Rect(30)#直接通过方法名来访问 area 方法print("矩形的面积是:",rect.area)

想实现修改 area 属性的值,还需要为 area 属性添加 setter 方法,就需要用到 setter 装饰器,它的语法格式如下

@方法名.setter
def 方法名(self, value):代码块
@area.setter
def area(self, value):self.__area = value

在运行修改参数时,不会报错。

    rect.area = 90print("修改后的面积:",rect.area)

2.与所定义的属性配合使用,这样可以防止属性被修改。

由于python进行属性的定义时,没办法设置私有属性,因此要通过@property的方法来进行设置。这样可以隐藏属性名,让用户进行使用的时候无法随意修改。

class DataSet(object):def __init__(self):self._images = 1self._labels = 2 #定义属性的名称@propertydef images(self): #方法加入@property后,这个方法相当于一个属性,这个属性可以让用户进行使用,而且用户有没办法随意修改。return self._images @propertydef labels(self):return self._labels
l = DataSet()
#用户进行属性调用的时候,直接调用images即可,而不用知道属性名_images,因此用户无法更改属性,从而保护了类的属性。
print(l.images) # 加了@property后,可以用调用属性的形式来调用方法,后面不需要加()。

python @property的介绍与使用相关推荐

  1. PyKivy入门教程:Kivy Python库的介绍、安装及使用方法详解

    PyKivy入门教程:Kivy Python库的介绍.安装及使用方法详解 Kivy是一个跨平台的Python GUI工具包,可以用于开发能够在多种设备和操作系统上运行的应用程序.Kivy支持触摸输入. ...

  2. Python字节码介绍

    了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...

  3. python搭建环境是什么_python虚拟环境是什么?python虚拟环境的介绍

    本篇文章给大家带来的内容是关于python虚拟环境是什么?python虚拟环境的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 什么是Python的虚拟环境 记得在学校写代码的时 ...

  4. python软件界面-python软件界面介绍(python软件介绍)

    python软件界面介绍 1.接口初始化 当我们使用pycharm工具时,我们将遇到的第一个问题是,在进行各种配置后界面变得混乱时,我们该怎么办?我们应该还原,那么如何还原初始设置? 尽管此工具是从e ...

  5. anaconda怎么使用python包_Anaconda中python包的介绍与使用方法

    Anaconda中python包的介绍与使用方法 目录: 1.包的定义 2.常用包管理器 3.包管理器的使用方法 4.数据科学常用的包 1.包的定义 由多个和同一功能相关的模块组成,通常为含有_ini ...

  6. python url模块介绍_python 中 urlparse 模块介绍

    urlparse模块主要是用于解析url中的参数  对url按照一定格式进行 拆分或拼接 1.urlparse.urlparse 将url分为6个部分,返回一个包含6个字符串项目的元组:协议.位置.路 ...

  7. 每天一小时python官方文档学习(一)————python的简单介绍

    我们都知道,python的官方文档写得十分详尽,也是每一个学习python的人都绕不开的. 所以从今天开始,我每天都会用一小时学习python的官方文档,按照文档目录的顺序,摘录一些有用的语句,写下一 ...

  8. python命令行模式和交互模式区别_对命令行模式与python交互模式介绍

    命令行模式与python交互模式 1.在命令行模式下,可以执行 python 进入 Python 交互式环境,也可以执 行 python hello.py 运行一个.py 文件. 2.在 Python ...

  9. python安装目录结构_1.5 python安装目录介绍《Python基础开发入门到精通》

    第一章 Python的概述与环境安装 本章所讲内容: 1.1 Python介绍 1.2 Python2与Python3的比较 1.3 Python3的安装 1.4 Python环境变量配置 1.5 P ...

  10. 数据分析与挖掘中常用Python库的介绍与实践案例

    数据分析与挖掘中常用Python库的介绍与实践案例 一.Python介绍 现在python一词对我们来说并不陌生,尤其是在学术圈,它的影响力远超其它任何一种编程语言, 作为一门简单易学且功能强大的编程 ...

最新文章

  1. Linux 学习_在Linux下面安装eclipse
  2. 专题 17 SOCKET并发程序设计
  3. linux下单独安装oracle12.1客户端
  4. 使用kettle导入数据到ADB for PostgreSQL
  5. python 图片转文字错误_python3把base64字符串写成图片文件出错
  6. IDEA配置码云Gitee的使用详解
  7. RDP协议详细解析(二)
  8. 一步一步写算法(之排序二叉树删除-2)
  9. sublime后缀_在sublime text中如何设置某种扩展名文件的默认语法
  10. python和c的语法区别_python和c语言语法有什么区别?
  11. Scratch可视化的编程工具
  12. 过程FMEA(PFMEA)步骤一:策划与准备
  13. 查看服务器远程桌面端口命令,Windows系统服务器远程桌面端口查看和修改方法...
  14. 130292015015-傅志彬-第1章作业
  15. Android 微信分享不显示分享出去的图标问题
  16. 相濡以沫还是想忘于江湖
  17. 第一章:Google简介
  18. 西北大学2019年春季校赛题解(G-L)
  19. VMWare中CentOS7增加系统盘空间
  20. ASO优化|第一期:想吃鸡?靠的就是这份详情页优化攻略

热门文章

  1. ESX无法感知VM的心跳
  2. 我个人的未来5年IT学习计划
  3. 使用Python教你秒搭本地服务器
  4. BZOJ2428[HAOI2006] 均分数据
  5. 微信小程序报错:Unhandled promise rejection TypeError: WebAssembly.instantiate(): Argument 0 must be a buffe
  6. Element-UI学习笔记-安装
  7. diff 比较文件异同命令
  8. basename 从绝对路径中取得文件名
  9. python数据分析师工作内容_数据分析师的具体工作职责和工作内容有哪些?
  10. 计算机网络及电子邮件的原理,全国2006年4月全国自考计算机网络基本原理真题及答案..doc...