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 相关文章推荐
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
Django查询数据库的性能优化示例代码
Sep 24 Python
python爬取m3u8连接的视频
Feb 28 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
使用Python提取文本中含有特定字符串的方法示例
Dec 09 Python
python中delattr删除对象方法的代码分析
Dec 15 Python
python字典按照value排序方法
Dec 28 Python
Python实现石头剪刀布游戏
Jan 20 Python
Python 求向量的余弦值操作
Mar 04 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 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
DIY实用性框形天线
2021/03/02 无线电
PHP 数字左侧自动补0
2008/03/31 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
详解python之多进程和进程池(Processing库)
2017/06/09 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
浅析python中while循环和for循环
2019/11/19 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
实习护士自我鉴定
2013/10/13 职场文书
肯尼迪就职演说稿
2013/12/31 职场文书
社区母亲节活动方案
2014/03/05 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
数学教师个人工作总结
2015/02/06 职场文书
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技