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的Flask框架中SQLAlchemy使用时的乱码问题解决
Nov 07 Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 Python
深入理解Django的中间件middleware
Mar 14 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
Python日期时间对象转换为字符串的实例
Jun 22 Python
Django admin model 汉化显示文字的实现方法
Aug 12 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
Jun 02 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 Python
python - timeit 时间模块
Apr 06 Python
Python实现列表拼接和去重的三种方式
Jul 02 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中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
JSQL  一个 web DB 的封装
2010/05/05 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
2019/09/03 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
js实现无缝轮播图
2020/03/09 Javascript
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
python删除过期文件的方法
2015/05/29 Python
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
Python 列表理解及使用方法
2017/10/27 Python
python pycurl验证basic和digest认证的方法
2018/05/02 Python
利用python如何处理nc数据详解
2018/05/23 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
计划生育证明格式及范本
2014/10/09 职场文书
教师工作能力自我评价
2015/03/04 职场文书