Python面向对象程序设计之私有变量,私有方法原理与用法分析


Posted in Python onMarch 23, 2020

本文实例讲述了Python面向对象程序设计之私有变量,私有方法原理与用法。分享给大家供大家参考,具体如下:

私有变量,私有方法:

  • python的私有化是为了规划私有属性,避免非相关的访问【假如!我有老婆,你不能直接知道我老婆是谁,你只有问我才会知道,即我的私有属性只有我知道】
  • 在python中定义私有变量和私有方法只需要在变量名或函数名前加上 "__"两个下划线Python面向对象程序设计之私有变量,私有方法原理与用法分析
  • 在类内部的方法中使用时  self.__变量名或函数名。Python面向对象程序设计之私有变量,私有方法原理与用法分析
  • 实际上,如果真要访问私有变量和私有方法,也是可以访问的,因为实际上私有化的操作只是将变量或函数名更改了而已:
    • 下例中由private_value变为了_A__private_value【即_类名__属性名】,但为了保持私有性,不建议直接使用这种方法访问Python面向对象程序设计之私有变量,私有方法原理与用法分析
    class A:
      _private=6
      __private_value=5
      def __private_func(self):
        print("hello")
      def get_private_value(self):
        return self.__private_value
    a=A()
    # print(a.__private_value)###报错,找不到该属性
    print(a.get_private_value())
    print(a._A__private_value)
  • 私有化变量和方法的继承:【子类不会继承基类私有属性,但仍然通过基类的函数来获取或可以强行访问】

class A:
  _private=6
  __private_value=5
  def __private_func(self):
    print("hello")
  def get_private_value(self):
    return self.__private_value
class B(A):
  pass
b=B()
# print(b.__private_value)#报错
print(b.get_private_value())#可以使用父类的方法来获取私有属性
print(b._A__private_value)#强制访问还是可以的

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
numpy自动生成数组详解
Dec 15 Python
python 调用有道api接口的方法
Jan 03 Python
Django之模型层多表操作的实现
Jan 08 Python
Python实现Event回调机制的方法
Feb 13 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 Python
简述python Scrapy框架
Aug 17 Python
Python实现EM算法实例代码
Oct 04 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
Python常用编译器原理及特点解析
Mar 23 #Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 #Python
Python面向对象程序设计之继承、多态原理与用法详解
Mar 23 #Python
python实现图像拼接功能
Mar 23 #Python
Python猴子补丁Monkey Patch用法实例解析
Mar 23 #Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 #Python
Python3 pickle对象串行化代码实例解析
Mar 23 #Python
You might like
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
Javascript实现的分页函数
2007/02/07 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
2018/05/27 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
[46:10]2014 DOTA2国际邀请赛中国区预选赛 CnB VS HGT
2014/05/21 DOTA
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
python复制文件的方法实例详解
2015/05/22 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
美国羊皮公司:Overland
2018/01/15 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
什么是Remote Module
2016/06/10 面试题
英语专业应届生求职信范文
2013/11/15 职场文书
学校运动会报道稿
2014/09/23 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python
Django实现drf搜索过滤和排序过滤
2021/06/21 Python
Python进程间的通信之语法学习
2022/04/11 Python