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中的闭包
Aug 11 Python
Python文件处理
Feb 29 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
使用Python编写Prometheus监控的方法
Oct 15 Python
Python之修改图片像素值的方法
Jul 03 Python
详解python中的time和datetime的常用方法
Jul 08 Python
Pandas 缺失数据处理的实现
Nov 04 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 Python
Keras: model实现固定部分layer,训练部分layer操作
Jun 28 Python
基于Python实现的购物商城管理系统
Apr 27 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
Apache服务器无法使用的解决方法
2013/05/08 PHP
php单一接口的实现方法
2015/06/20 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
跟老齐学Python之开始真正编程
2014/09/12 Python
Python入门篇之编程习惯与特点
2014/10/17 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
python基于http下载视频或音频
2018/06/20 Python
python绘制热力图heatmap
2020/03/23 Python
Django如何将URL映射到视图
2019/07/29 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
Python计算IV值的示例讲解
2020/02/28 Python
python中setuptools的作用是什么
2020/06/19 Python
基于python实现操作git过程代码解析
2020/07/27 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
python 使用openpyxl读取excel数据
2021/02/18 Python
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
面试求职的个人自我评价
2013/11/16 职场文书
转让协议书范本
2014/04/15 职场文书
最新离婚协议书范本
2014/08/19 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
开会通知短信大全
2015/04/20 职场文书
企业催款函范本
2015/06/24 职场文书
筑梦中国心得体会
2016/01/18 职场文书
导游词之山东孔庙
2019/11/04 职场文书
详解python网络进程
2021/06/15 Python