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利用Nagios增加微信报警通知的功能
Feb 18 Python
python连接mysql实例分享
Oct 09 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 Python
python的等深分箱实例
Nov 22 Python
Python统计学一数据的概括性度量详解
Mar 03 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
基于Python的Jenkins的二次开发操作
May 12 Python
Python drop方法删除列之inplace参数实例
Jun 27 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
详解Django中views数据查询使用locals()函数进行优化
Aug 24 Python
Python数据可视化之绘制柱状图和条形图
May 25 Python
Elasticsearch 批量操作
Apr 19 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
escape unescape的php下的实现方法
2007/04/27 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
yii数据库的查询方法
2015/12/28 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
JS学习之一个简易的日历控件
2010/03/24 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
python生成器的使用方法
2013/11/21 Python
理解Python中的类与实例
2015/04/27 Python
python使用socket远程连接错误处理方法
2015/04/29 Python
python正则表达式re之compile函数解析
2017/10/25 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
《乡愁》教学反思
2014/02/18 职场文书
公司办公室岗位职责
2014/03/19 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
服务标语口号
2014/07/01 职场文书
药店采购员岗位职责
2014/09/30 职场文书
运动会广播稿200字
2014/10/18 职场文书