python基于property()函数定义属性


Posted in Python onJanuary 22, 2020

这篇文章主要介绍了python基于property()函数定义属性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

正常情况下,类包含的属性应该是隐藏的,只允许通过类提供的方法来间接的实现对类属性的访问和操作。

class Person:
  #构造函数
  def __init__(self, name):
    self.name = name
  #设置name属性值的函数
  def setname(self, name):
    self.name = name
  #访问name属性值的函数
  def getname(self):
    return self.name
  #删除name属性值的函数
  def delname(self):
    self.name = "xxx"
xiaobai = Person("xiaobai")
#获取name属性值
print(xiaobai.getname())
#设置name属性值
xiaobai.setname("xiaohei")
print(xiaobai.getname())
#删除name属性值
xiaobai.delname()
print(xiaobai.getname())
xiaobai
xiaohei
xxx

python中提供了property()函数,可以实现在不破坏类封装原则的前提下,让开发者依旧使用“类对象.属性”的方式操作类中的属性。

class Person:
  #构造函数
  def __init__(self, name):
    self.__name = name #双前导下划线(私有属性)会导致解释器重写属性名称,以避免子类中的命名冲突
  #设置name属性值的函数
  def setname(self, name):
    self.__name = name
  #访问name属性值的函数
  def getname(self):
    return self.__name
  #删除name属性值的函数
  def delname(self):
    self.__name = "xxx"
  #为name属性配置property()函数
  name = property(getname, setname, delname, '说明文档')
#调取说明文档的两种方式
print(Person.name.__doc__)
help(Person.name)
xiaobai = Person("xiaobai")
#获取name属性值
print(xiaobai.name)
#设置name属性值
xiaobai.name = "xiaohei"
print(xiaobai.name)
#删除name属性值
del xiaobai.name
print(xiaobai.name)
说明文档
Help on property:

  说明文档

xiaobai
xiaohei
xxx

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
一篇不错的Python入门教程
Feb 08 Python
python搭建简易服务器分析与实现
Dec 15 Python
使用Python装饰器在Django框架下去除冗余代码的教程
Apr 16 Python
Python中的字典与成员运算符初步探究
Oct 13 Python
浅谈python中set使用
Jun 30 Python
Python中遇到的小问题及解决方法汇总
Jan 11 Python
分析Python中解析构建数据知识
Jan 20 Python
python将pandas datarame保存为txt文件的实例
Feb 12 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
Feb 27 Python
python 日志模块logging的使用场景及示例
Jan 04 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 Python
Python @property装饰器原理解析
Jan 22 #Python
Python底层封装实现方法详解
Jan 22 #Python
tensorboard实现同时显示训练曲线和测试曲线
Jan 21 #Python
使用tensorboard可视化loss和acc的实例
Jan 21 #Python
TensorFlow绘制loss/accuracy曲线的实例
Jan 21 #Python
NumPy统计函数的实现方法
Jan 21 #Python
TensorFlow实现打印每一层的输出
Jan 21 #Python
You might like
php+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
PHP生成器简单实例
2015/05/13 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
PHP函数积累总结
2019/03/19 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
javascript 面向对象 function类
2010/05/13 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
微信小程序使用radio显示单选项功能【附源码下载】
2017/12/11 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
利用Python自动化操作AutoCAD的实现
2020/04/01 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
体育教育个人自荐信范文
2013/12/01 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
傅雷家书读书笔记
2015/06/29 职场文书