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小程序
Aug 15 Python
Python入门_学会创建并调用函数的方法
May 16 Python
在Pycharm中对代码进行注释和缩进的方法详解
Jan 20 Python
更新修改后的Python模块方法
Mar 03 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
一篇文章了解Python中常见的序列化操作
Jun 20 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
python脚本后台执行方式
Dec 21 Python
python使用ctypes库调用DLL动态链接库
Oct 22 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
Nov 15 Python
使用Python爬取小姐姐图片(beautifulsoup法)
Feb 11 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
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
php随机抽奖实例分析
2015/03/04 PHP
jQuery mobile 移动web(6)
2015/12/20 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
Python3遍历目录树实现方法
2015/05/22 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
澳大利亚儿童鞋在线:The Trybe
2019/07/16 全球购物
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
制药工程专业毕业生推荐信
2013/12/24 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
医学专业大学生求职信
2014/07/12 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
副校长2015年教育教学工作总结
2015/07/27 职场文书
超市主管竞聘书
2015/09/15 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang
MySQL时区造成时差问题
2022/04/13 MySQL