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 相关文章推荐
详解duck typing鸭子类型程序设计与Python的实现示例
Jun 03 Python
小小聊天室Python代码实现
Aug 17 Python
python实现二维码扫码自动登录淘宝
Dec 27 Python
Python实现的HMacMD5加密算法示例
Apr 03 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
python pandas库的安装和创建
Jan 10 Python
python的re模块使用方法详解
Jul 26 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
python__new__内置静态方法使用解析
Jan 07 Python
Pandas的Apply函数具体使用
Jul 21 Python
使用python操作lmdb对数据读取的实例
Dec 11 Python
pandas DataFrame.shift()函数的具体使用
May 24 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 smarty函数扩展
2010/03/15 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
js实现图片轮播效果
2015/12/19 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
浅谈Webpack打包优化技巧
2018/06/12 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
Python 读写文件的操作代码
2018/09/20 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
python elasticsearch环境搭建详解
2019/09/02 Python
pycharm第三方库安装失败的问题及解决经验分享
2020/05/09 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
HTML文本属性&颜色控制属性的实现
2019/12/17 HTML / CSS
芝加哥牛排公司:Chicago Steak Company
2018/10/31 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
意大利领先的奢侈品在线时装零售商:MCLABELS
2020/10/13 全球购物
继承公证书样本
2014/04/04 职场文书
干部年终考核评语
2015/01/04 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python