Python底层封装实现方法详解


Posted in Python onJanuary 22, 2020

这篇文章主要介绍了Python底层封装实现方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

事实上,python封装特性的实现纯属“投机取巧”,之所以类对象无法直接调用私有方法和属性,是因为底层实现时,python偷偷改变了它们的名称。

python在底层实现时,将它们的名称都偷偷改成了"_类名__属性(方法)名"的格式

class Person:
  def setname(self, name):
    if len(name) < 3:
      raise ValueError('名称长度必须大于3!')
    self.__name = name
    
  def getname(self):
    return self.__name
  
  #为name配置setter和getter方法
  name = property(getname, setname)
  
  def setage(self, age):
    if age < 100:
      self.__age = age
    else:
      raise ValueError('年龄必须小于100!')
  
  def getage(self):
    return self.__age
  
  #为age配置getter和setter方法
  age = property(getage, setage)
  
  #定义私有方法
  def __display(self):
    print(self.__name, "今年", self.__age, "岁。")
    
xiaobai = Person()
xiaobai.name = "xiaobai"
xiaobai.age = 20
#直接调用隐藏的display()方法
xiaobai._Person__display()

xiaobai 今年 20 岁。

总结:python类中所有的属性和方法,都是公有的,如果希望python底层修改类属性或者类方法的名称,以此将它们隐藏起来,只需将它们的名称前添加双下划线("__")即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中声明只包含一个元素的元组数据方法
Aug 25 Python
Python文件读取的3种方法及路径转义
Jun 21 Python
基于python的Tkinter实现一个简易计算器
Dec 31 Python
python实现用户登录系统
May 21 Python
Python计算字符宽度的方法
Jun 14 Python
Python中类型检查的详细介绍
Feb 13 Python
python如何派生内置不可变类型并修改实例化行为
Mar 21 Python
python防止随意修改类属性的实现方法
Aug 21 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
python安装gdal的两种方法
Oct 29 Python
20行Python代码实现视频字符化功能
Apr 13 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 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
NumPy排序的实现
Jan 21 #Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 #Python
You might like
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
JavaScript 数组详解
2013/10/10 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
Python实例之wxpython中Frame使用方法
2014/06/09 Python
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
幼师专业毕业生自荐信
2013/09/29 职场文书
实习生体会的自我评价范文
2013/11/28 职场文书
付款委托书范本
2014/04/04 职场文书
小学综合实践活动总结
2014/07/07 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
导游词欢迎词
2015/02/02 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang