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之集合的关系
Sep 24 Python
Python中处理字符串的相关的len()方法的使用简介
May 19 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
Python绘制七段数码管实例代码
Dec 20 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
python机器学习库scikit-learn:SVR的基本应用
Jun 26 Python
Python绘制堆叠柱状图的实例
Jul 09 Python
Django基础三之视图函数的使用方法
Jul 18 Python
Python如何实现强制数据类型转换
Nov 22 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
Django ModelForm组件原理及用法详解
Oct 12 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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数据缓存的使用说明
2013/05/10 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
浅谈Cookie的生命周期问题
2016/08/02 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
解决vue-loader加载不上的问题
2020/10/21 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
Python数组条件过滤filter函数使用示例
2014/07/22 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
八年级历史教学反思
2014/01/10 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
JavaScript 对象创建的3种方法
2021/11/17 Javascript
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python