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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
Web服务器框架 Tornado简介
Jul 16 Python
如何在Python中编写并发程序
Feb 27 Python
windows下安装Python和pip终极图文教程
Mar 05 Python
python 定时修改数据库的示例代码
Apr 08 Python
python实现一个简单的ping工具方法
Jan 31 Python
python从list列表中选出一个数和其对应的坐标方法
Jul 20 Python
pandas的排序和排名的具体使用
Jul 31 Python
Django重设Admin密码过程解析
Feb 10 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
Apr 15 Python
python的reverse函数翻转结果为None的问题
May 11 Python
python实现图像随机裁剪的示例代码
Dec 10 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
JavaScript 面向对象的 私有成员和公开成员
2010/05/13 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
Python迭代用法实例教程
2014/09/08 Python
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
python中Django文件上传方法详解
2020/08/05 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
JAVA程序员自荐书
2014/01/30 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript