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基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
Python3写入文件常用方法实例分析
May 22 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
Python爬虫实例扒取2345天气预报
Mar 04 Python
python3获取当前文件的上一级目录实例
Apr 26 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
Django安装配置mysql的方法步骤
Oct 15 Python
Python实现查找二叉搜索树第k大的节点功能示例
Jan 24 Python
python 返回一个列表中第二大的数方法
Jul 09 Python
详解python uiautomator2 watcher的使用方法
Sep 09 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
Tensorflow实现将标签变为one-hot形式
May 22 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
基于HTTP长连接的"服务器推"技术的php 简易聊天室
2009/10/31 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
js面向对象的写法
2016/02/19 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
关于vue组件事件属性穿透详解
2019/10/28 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
使用python绘制温度变化雷达图
2019/10/18 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
高一地理教学反思
2014/01/18 职场文书
数学系毕业生求职信
2014/05/29 职场文书
标准版离职证明书
2014/09/12 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
债务追讨律师函
2015/06/24 职场文书
考研经验交流会策划书
2015/11/02 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
Python作用域和名称空间的详细介绍
2022/04/13 Python