python里运用私有属性和方法总结


Posted in Python onJuly 08, 2019

如何在PYTHON里运用私有属性和方法

class File:

  def __init__(self, name):

    self.name = name

    self.code = "ABCDEF"

    

file_A = File("file_A")

#假设我们有一个类,叫做文件类,设置一个对象file_A。

python里运用私有属性和方法总结

file_A.code

#如果直接调用属性,是可以看到属性里面有什么,但是如果这是个机密的密码不能公布,是不能这么处理的。

python里运用私有属性和方法总结

class File:

  def __init__(self, name):

    self.name = name

    self.__code = "ABCDEF"

    

file_A = File("file_A")

print(file_A.code)

#如果不想密码公布,可以对属性的名称加上__,但是这里出错了。

python里运用私有属性和方法总结

class File:

  def __init__(self, name):

    self.name = name

    self.__code = "ABCDEF"

    

file_A = File("file_A")

print(file_A.__code)

#很多人以为是因为外部的名称打少了__,但是这里依旧出错了,那是因为这是私有的属性。

python里运用私有属性和方法总结

class File:

  def __init__(self, name):

    self.name = name

    self.__code = "ABCDEF"

  def open(self):

    print("This is the AAA file!")

    

file_A = File("file_A")

file_A.open()

#除了属性,方法也能私有吗?答案是可以的。

python里运用私有属性和方法总结

class File:

  def __init__(self, name):

    self.name = name

    self.__code = "ABCDEF"

  def __open(self):

    print("This is the AAA file!")

    

file_A = File("file_A")

file_A.__open()

#私有方法以后,看出来和私有属性的返回结果是一致的。

python里运用私有属性和方法总结

class File:

  def __init__(self, name):

    self.name = name

    self.__code = "ABCDEF"

  def __open(self):

    print("This is the AAA file!")

    

file_A = File("file_A")

print(file_A._File__code)

file_A._File__open()

#在PYTHON里面如果在方法和属性那里加上_类名是可以看到私有的属性和方法的。

python里运用私有属性和方法总结

知识点扩展:

python默认的成员函数和成员变量都是公开的,python 私有属性和方法没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只需要在变量名或函数名前加上 "__"两个下划线,那么这个函数或变量就会为私有的了。 在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__membername,所以你在外部使用原来的私有成员的名字时,会提示找不到。 比如:

class Person:

def __init__(self):
self.__name = 'haha'#私有属性
self.age = 22

def __get_name(self):##私有方法
return self.__name

def get_age(self):
return self.age

person = Person()
print person.get_age()
print person.__get_name()
运行结果是:22 Traceback (most recent call last): File "E:\pythoner\zenghe\jay.py", line 38, in print person.__get_name() AttributeError: Person instance has no attribute '__get_name'

我们这里定义的__name是私有属性,__get_name()是私有方法。如果直接访问的话,会提示找不到相关的属性或者方法,但是如果你真要访问私 有的相关数据的话, 也是可以访问的,严格地说,私有方法在它们的类外是可以访问的,只是不容易 处理。在 Python 中没有什么是真正私有的;在内部,私有方法和属性的名字被忽然改变和恢复,以致于使得它们看上去用它们给定的名字是无法使用的

Python 相关文章推荐
python实现简单的TCP代理服务器
Oct 08 Python
利用Fn.py库在Python中进行函数式编程
Apr 22 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
Python断言assert的用法代码解析
Feb 03 Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
Python 静态方法和类方法实例分析
Nov 21 Python
Jupyter Notebook远程登录及密码设置操作
Apr 10 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 #Python
python字符串查找函数的用法详解
Jul 08 #Python
python提取log文件内容并画出图表
Jul 08 #Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 #Python
使用Python opencv实现视频与图片的相互转换
Jul 08 #Python
python基于paramiko将文件上传到服务器代码实现
Jul 08 #Python
Python脚本利用adb进行手机控制的方法
Jul 08 #Python
You might like
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
js+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合
2011/03/10 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
pandas中Timestamp类用法详解
2017/12/11 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
印尼综合在线预订网站:Tiket.com(机票、酒店、火车、租车和娱乐)
2018/10/11 全球购物
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
职称自我鉴定
2013/10/15 职场文书
岗位明星事迹材料
2014/05/18 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript
详解SQL的窗口函数
2022/04/21 Oracle
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL