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函数的5种参数详解
Feb 24 Python
python使用Tesseract库识别验证
Mar 21 Python
python随机取list中的元素方法
Apr 08 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
pandas DataFrame的修改方法(值、列、索引)
Aug 02 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
python使用配置文件过程详解
Dec 28 Python
Python实现Word表格转成Excel表格的示例代码
Apr 16 Python
python小白学习包管理器pip安装
Jun 09 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
Aug 03 Python
详解pycharm2020.1.1专业版安装指南(推荐)
Aug 07 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
PHP $_SERVER详解
2009/01/16 PHP
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
PHP排序算法类实例
2015/06/17 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
2010/03/09 Javascript
jQuery基本选择器选择元素使用介绍
2013/04/18 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
python处理PHP数组文本文件实例
2014/09/18 Python
Python中的tuple元组详细介绍
2015/02/02 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
python 拼接文件路径的方法
2018/10/23 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
kafka-python批量发送数据的实例
2018/12/27 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
Python 用三行代码提取PDF表格数据
2019/10/13 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
Foreo国际站:Foreo International
2018/10/29 全球购物
是否有自动比较结构的方法
2015/06/03 面试题
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python