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写的windows服务不能启动的问题
Apr 15 Python
跟老齐学Python之重回函数
Oct 10 Python
使用python实现个性化词云的方法
Jun 16 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
python迭代dict的key和value的方法
Jul 06 Python
Python2实现的图片文本识别功能详解
Jul 11 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
Apr 25 Python
Django 大文件下载实现过程解析
Aug 01 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 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+mysql扎实个人基本功
2008/03/27 PHP
PHP6 mysql连接方式说明
2009/02/09 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
javascript第一课
2007/02/27 Javascript
javascript 常用方法总结
2009/06/03 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
Python 开发Activex组件方法
2009/11/08 Python
Python中Collection的使用小技巧
2014/08/18 Python
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
配置管理计划的主要内容有哪些
2014/06/20 面试题
Python里面search()和match()的区别
2016/09/21 面试题
优秀员工个人的自我评价
2013/11/29 职场文书
期中考试后的反思
2014/02/08 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
预备党员公开承诺书
2014/05/28 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
工程部经理岗位职责
2015/02/02 职场文书
公司考勤管理制度
2015/08/04 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书