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中变量交换的例子
Aug 25 Python
python实现批量获取指定文件夹下的所有文件的厂商信息
Sep 28 Python
python中__slots__用法实例
Jun 04 Python
Python enumerate函数功能与用法示例
Mar 01 Python
PyQt5 在label显示的图片中绘制矩形的方法
Jun 17 Python
Python 200行代码实现一个滑动验证码过程详解
Jul 11 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
Feb 27 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
python利用xlsxwriter模块 操作 Excel
Oct 14 Python
基于Python绘制子图及子图刻度的变换等的问题
May 23 Python
python+opencv实现视频抽帧示例代码
Jun 11 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
编译问题
2006/10/09 PHP
数字转英文
2006/12/06 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
smarty模板引擎之分配数据类型
2015/03/30 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
python计算列表内各元素的个数实例
2018/06/29 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
Python Selenium库的基本使用教程
2021/01/04 Python
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
应届毕业生简历自我评价
2014/01/31 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
2014教师党员自我评议总结
2014/09/19 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
高温慰问简报
2015/07/21 职场文书
清明节主题班会
2015/08/14 职场文书
Oracle用户管理及赋权
2022/04/24 Oracle