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的web.py框架下的application.py模块
May 02 Python
实用自动化运维Python脚本分享
Jun 04 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
PyQt5组件读取参数的实例
Jun 25 Python
python批量修改ssh密码的实现
Aug 08 Python
python打开使用的方法
Sep 30 Python
Python基于当前时间批量创建文件
May 07 Python
Opencv求取连通区域重心实例
Jun 04 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
python爬虫selenium模块详解
Mar 30 Python
总结Python常用的魔法方法
May 25 Python
python缺失值填充方法示例代码
Dec 24 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
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
js实现浏览器窗口大小被改变时触发事件的方法
2015/02/02 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
最基础的Python的socket编程入门教程
2015/04/23 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
python使用selenium实现批量文件下载
2019/03/11 Python
Python语法分析之字符串格式化
2019/06/13 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
自荐信模版
2013/10/24 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
教师远程培训感言
2014/03/06 职场文书
材料会计岗位职责
2014/03/06 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
创业计划书之家教中心
2019/09/25 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python