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回调函数用法实例详解
Jul 02 Python
python微信跳一跳系列之棋子定位像素遍历
Feb 26 Python
Python实现的redis分布式锁功能示例
May 29 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
Python闭包思想与用法浅析
Dec 27 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
python实现异常信息堆栈输出到日志文件
Dec 26 Python
什么是Python中的匿名函数
Jun 02 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
Jun 23 Python
python 调整图片亮度的示例
Dec 03 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数据缓存技术
2007/02/14 PHP
php 什么是PEAR?(第二篇)
2009/03/19 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
再论Javascript下字符串连接的性能
2011/03/05 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
jQuery简单实现日历的方法
2015/05/04 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
js中this对象用法分析
2018/01/05 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
python实现用户登陆邮件通知的方法
2015/07/09 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
Python实现的密码强度检测器示例
2017/08/23 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
浅析python中的del用法
2020/09/02 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
告诉你怎样写创业计划书
2014/01/27 职场文书
本科毕业生自荐信
2014/06/02 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python