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 相关文章推荐
Python 随机生成中文验证码的实例代码
Mar 20 Python
Python3字符串学习教程
Aug 20 Python
使用Python搭建虚拟环境的配置方法
Feb 28 Python
python求质数的3种方法
Sep 28 Python
使用python对excle和json互相转换的示例
Oct 23 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
Python关于excel和shp的使用在matplotlib
Jan 03 Python
python lxml中etree的简单应用
May 10 Python
python3 pygame实现接小球游戏
May 14 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
Python 日期与时间转换的方法
Aug 01 Python
Django后端按照日期查询的方法教程
Feb 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
虫族 ZERG 概述
2020/03/14 星际争霸
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
2014/03/06 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
jQuery中hover与mouseover和mouseout的区别分析
2015/12/24 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
基于js中的原型(全面讲解)
2017/09/19 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
OpenCV实现人脸识别
2017/04/07 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
django Serializer序列化使用方法详解
2018/10/16 Python
python实现一组典型数据格式转换
2018/12/15 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
python代码编写计算器小程序
2020/03/30 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
感恩祖国演讲稿
2014/09/09 职场文书
Vue2.0搭建脚手架
2022/03/13 Vue.js
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python