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根据出生日期获得年龄的方法
Mar 31 Python
Python实现快速多线程ping的方法
Jul 15 Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
Apr 17 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
Jun 13 Python
python的pytest框架之命令行参数详解(下)
Jun 27 Python
python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结
Jul 04 Python
使用python爬取抖音视频列表信息
Jul 15 Python
Python中使用socks5设置全局代理的方法示例
Apr 15 Python
pycharm第三方库安装失败的问题及解决经验分享
May 09 Python
Django如何在不停机的情况下创建索引
Aug 02 Python
Python实现石头剪刀布游戏
Jan 20 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文件上传表单摘自drupal的代码
2011/02/15 PHP
php中用foreach来操作数组的代码
2011/07/17 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
在PHP中使用redis
2013/11/04 PHP
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
详解VUE的状态控制与延时加载刷新
2017/03/27 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
es6学习之解构时应该注意的点
2017/08/29 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
python中的五种异常处理机制介绍
2014/09/02 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
Python 操作 MySQL数据库
2020/09/18 Python
浅析python 字典嵌套
2020/09/29 Python
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
大一军训感言
2014/01/09 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
工作违纪检讨书
2014/02/17 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
出国英文推荐信
2014/05/10 职场文书
党的生日演讲稿
2014/09/10 职场文书
模范教师材料大全
2014/12/16 职场文书
投资合作意向书范本
2015/05/08 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
Python中itertools库的四个函数介绍
2022/04/06 Python
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers