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输出指定月份日历的方法
Apr 23 Python
Python中模块string.py详解
Mar 12 Python
详解python的webrtc库实现语音端点检测
May 31 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 Python
python使用requests.session模拟登录
Aug 09 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
python数据爬下来保存的位置
Feb 17 Python
python+selenium+Chrome options参数的使用
Mar 18 Python
python+requests接口压力测试500次,查看响应时间的实例
Apr 30 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
python某漫画app逆向
Mar 31 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
根德YB400的电路分析
2021/03/02 无线电
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
thinkPHP中钩子的两种配置调用方法详解
2016/11/11 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
Javascript alert消息换行的方法
2013/08/07 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
python装饰器深入学习
2018/04/06 Python
Python之用户输入的实例
2018/06/22 Python
python单例模式实例解析
2018/08/28 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
python实现简单图书管理系统
2019/11/22 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
基于python实现查询ip地址来源
2020/06/02 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
写好自荐信要注意的问题
2013/11/10 职场文书
大学生学业生涯规划
2014/01/05 职场文书
《画家乡》教学反思
2014/04/22 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
毕业证明书
2015/06/19 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python