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 ljust rjust center输出
Sep 06 Python
python翻译软件实现代码(使用google api完成)
Nov 26 Python
简单讲解Python中的闭包
Aug 11 Python
浅谈python中的实例方法、类方法和静态方法
Feb 17 Python
python自动裁剪图像代码分享
Nov 25 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
Dec 05 Python
浅谈Python中函数的定义及其调用方法
Jul 19 Python
150行Python代码实现带界面的数独游戏
Apr 04 Python
PyTorch如何搭建一个简单的网络
Aug 24 Python
利用Pycharm连接服务器的全过程记录
Jul 01 Python
Python音乐爬虫完美绕过反爬
Aug 30 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
牡丹941资料
2021/03/01 无线电
基于Zend的Config机制的应用分析
2013/05/02 PHP
php数组查找函数总结
2014/11/18 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
2014/05/04 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
如何提高数据访问速度
2016/12/26 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
2019/01/19 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
Python3中exp()函数用法分析
2019/02/19 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
python中np是做什么的
2020/07/21 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
老师的检讨书
2014/02/23 职场文书
求职信怎么写
2014/05/23 职场文书
作风整顿个人剖析材料
2014/10/06 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
家长通知书家长意见
2014/12/30 职场文书
销售会议开幕词
2015/01/28 职场文书
项目负责人岗位职责
2015/02/15 职场文书
优秀英文求职信范文
2015/03/19 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
评测 | 大屏显示带收音机的高端音箱,JBL TUNE2便携式插卡音箱实测
2021/04/24 无线电
golang 实现Location跳转方式
2021/05/02 Golang