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之集成开发环境(IDE)
Sep 12 Python
详解在Python和IPython中使用Docker
Apr 28 Python
Python批量提取PDF文件中文本的脚本
Mar 14 Python
一份python入门应该看的学习资料
Apr 11 Python
对Python 2.7 pandas 中的read_excel详解
May 04 Python
python 读取目录下csv文件并绘制曲线v111的方法
Jul 06 Python
java判断三位数的实例讲解
Jun 10 Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
Jan 17 Python
使用python实现CGI环境搭建过程解析
Apr 28 Python
Python Spyder 调出缩进对齐线的操作
Feb 26 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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 foreach 参数强制类型转换的问题
2010/12/10 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
非主流的textarea自增长实现js代码
2011/12/20 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
巴西男士胡须和头发护理产品商店:Beard
2017/11/13 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
const和static readonly区别
2013/05/20 面试题
电子信息工程专业推荐信
2014/02/14 职场文书
2016年教师节感言
2015/12/09 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
Java如何实现树的同构?
2021/06/22 Java/Android
dubbo服务整合zipkin详解
2021/07/26 Java/Android
MySQL里面的子查询的基本使用
2021/08/02 MySQL
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL