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实现简单的获取图片爬虫功能示例
Jul 12 Python
numpy.delete删除一列或多列的方法
Apr 03 Python
对Python中type打开文件的方式介绍
Apr 28 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
wxPython电子表格功能wx.grid实例教程
Nov 19 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
python和php哪个更适合写爬虫
Jun 22 Python
python collections模块的使用
Oct 16 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 24 Python
Python实现学生管理系统(面向对象版)
Jun 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
php实现简单的上传进度条
2015/11/17 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python使用pil生成缩略图的方法
2015/03/26 Python
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
python 切换root 执行命令的方法
2019/01/19 Python
Django保护敏感信息的方法示例
2019/05/09 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
Python线程threading模块用法详解
2020/02/26 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
Python os库常用操作代码汇总
2020/11/03 Python
Django中使用Celery的方法步骤
2020/12/07 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
调查研究项目计划书
2014/04/29 职场文书
城南旧事读书笔记
2015/06/29 职场文书
初一军训感言
2015/08/01 职场文书
生产车间管理制度
2015/08/04 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle