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按照多个字符对字符串进行分割的方法
Mar 17 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
在django中使用自定义标签实现分页功能
Jul 04 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
Python实现自动上京东抢手机
Feb 06 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
Python日志无延迟实时写入的示例
Jul 11 Python
python实现大战外星人小游戏实例代码
Dec 26 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
python基于exchange函数发送邮件过程详解
Nov 06 Python
Python中request的基本使用解决乱码问题
Apr 12 Python
Python 统计序列中元素的出现频度
Apr 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集成FCK的函数代码
2008/09/27 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
Jquery常用的方法汇总
2015/09/01 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
python多线程方式执行多个bat代码
2016/06/07 Python
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
大学毕业自我评价
2014/02/02 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
论文答辩开场白大全
2015/05/27 职场文书
电影红河谷观后感
2015/06/11 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP