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中的__slots__缓存资源以节省内存开销的方法
Apr 02 Python
Python运行报错UnicodeDecodeError的解决方法
Jun 07 Python
Python django实现简单的邮件系统发送邮件功能
Jul 14 Python
Python下实现的RSA加密/解密及签名/验证功能示例
Jul 17 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
Python实现按中文排序的方法示例
Apr 25 Python
Python实现使用卷积提取图片轮廓功能示例
May 12 Python
Python 中字符串拼接的多种方法
Jul 30 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
对python中不同模块(函数、类、变量)的调用详解
Jul 16 Python
简单的命令查看安装的python版本号
Aug 28 Python
Python创建简单的神经网络实例讲解
Jan 04 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 fsockopen中多线程问题的解决办法[翻译]
2011/11/09 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
Express.JS使用详解
2014/07/17 Javascript
script标签属性用type还是language
2015/01/21 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
python+mysql实现教务管理系统
2019/02/20 Python
Python3简单实现串口通信的方法
2019/06/12 Python
如何使用python传入不确定个数参数
2020/02/18 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
python实现简单的学生管理系统
2021/02/22 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
心得体会开头
2014/01/01 职场文书
司法所长先进事迹
2014/06/02 职场文书
奥林匹克的口号
2014/06/13 职场文书
云冈石窟导游词
2015/02/04 职场文书
婚礼家长致辞
2015/07/27 职场文书
python opencv通过4坐标剪裁图片
2021/06/05 Python
JavaScript实现队列结构过程
2021/12/06 Javascript
MySQL Server层四个日志的实现
2022/03/31 MySQL
Nginx配置根据url参数重定向
2022/04/11 Servers
Python中npy和mat文件的保存与读取
2022/04/24 Python
Django框架中模型的用法
2022/06/10 Python