Python 私有化操作实例分析


Posted in Python onNovember 21, 2019

本文实例讲述了Python 私有化操作。分享给大家供大家参考,具体如下:

私有化

xx: 公有变量
_x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问
_xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)
xx:双前后下划线,用户名字空间的魔法对象或属性。例如:init , __ 不要自己发明这样的名字
xx:单后置下划线,用于避免与Python关键词的冲突

通过name mangling(名字重整(目的就是以防子类意外重写基类的方法或者属性)如:_Class__object)机制就可以访问private了。

#coding=utf-8
class Person(object):
  def __init__(self, name, age, taste):
    self.name = name
    self._age = age 
    self.__taste = taste
  def showperson(self):
    print(self.name)
    print(self._age)
    print(self.__taste)
  def dowork(self):
    self._work()
    self.__away()
  def _work(self):
    print('my _work')
  def __away(self):
    print('my __away')
class Student(Person):
  def construction(self, name, age, taste):
    self.name = name
    self._age = age 
    self.__taste = taste
  def showstudent(self):
    print(self.name)
    print(self._age)
    print(self.__taste)
  @staticmethod
  def testbug():
    _Bug.showbug()
# 模块内可以访问,当from cur_module import *时,不导入
class _Bug(object):
  @staticmethod
  def showbug():
    print("showbug")
s1 = Student('jack', 25, 'football')
s1.showperson()
print('*'*20)
# 无法访问__taste,导致报错
# s1.showstudent() 
s1.construction('rose', 30, 'basketball')
s1.showperson()
print('*'*20)
s1.showstudent()
print('*'*20)
Student.testbug()

Python 私有化操作实例分析

总结

父类中属性名为__名字的,子类不继承,子类不能访问
如果在子类中向__名字赋值,那么会在子类中定义的一个与父类相同名字的属性
_名的变量、函数、类在使用from xxx import *时都不会被导入

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python写的PHPMyAdmin暴力破解工具代码
Aug 06 Python
python通过shutil实现快速文件复制的方法
Mar 14 Python
Python 网页解析HTMLParse的实例详解
Aug 10 Python
python去除拼音声调字母,替换为字母的方法
Nov 28 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
Python 串口读写的实现方法
Jun 12 Python
Django ModelForm组件使用方法详解
Jul 23 Python
Python解析json代码实例解析
Nov 25 Python
python实现飞机大战项目
Mar 11 Python
浅谈Python程序的错误:变量未定义
Jun 02 Python
Python常遇到的错误和异常
Nov 02 Python
Python Matplotlib绘制动画的代码详解
May 30 Python
使用python的turtle绘画滑稽脸实例
Nov 21 #Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 #Python
Python 类的魔法属性用法实例分析
Nov 21 #Python
python画蝴蝶曲线图的实例
Nov 21 #Python
Python 静态方法和类方法实例分析
Nov 21 #Python
Python 用turtle实现用正方形画圆的例子
Nov 21 #Python
python 实现兔子生兔子示例
Nov 21 #Python
You might like
一个php作的文本留言本的例子(四)
2006/10/09 PHP
谨慎使用PHP的引用原因分析
2012/09/06 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
PHP安全下载文件的方法
2016/04/07 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
简介JavaScript中setUTCSeconds()方法的使用
2015/06/12 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
Python列表对象实现原理详解
2019/07/01 Python
Django app配置多个数据库代码实例
2019/12/17 Python
Python监控服务器实用工具psutil使用解析
2019/12/19 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
python实现的分层随机抽样案例
2020/02/25 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
文明教师事迹材料
2014/01/16 职场文书
自我鉴定四大框架
2014/01/17 职场文书
小松树教学反思
2014/02/11 职场文书
优秀团队获奖感言
2014/02/19 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书