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 01 Python
Python中用startswith()函数判断字符串开头的教程
Apr 07 Python
python开发中range()函数用法实例分析
Nov 12 Python
Python三级目录展示的实现方法
Sep 28 Python
python中从str中提取元素到list以及将list转换为str的方法
Jun 26 Python
Python 字符串、列表、元组的截取与切片操作示例
Sep 17 Python
selenium+Chrome滑动验证码破解二(某某网站)
Dec 17 Python
pytorch的batch normalize使用详解
Jan 15 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
Python select及selectors模块概念用法详解
Jun 22 Python
python,Java,JavaScript实现indexOf
Sep 09 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
操作Oracle的php类
2006/10/09 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
Javascript里使用Dom操作Xml
2007/01/22 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
JS字符串截取函数实例
2013/12/27 Javascript
javascript的函数作用域
2014/11/12 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
2020/08/14 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
django云端留言板实例详解
2019/07/22 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
python代码实现图书管理系统
2020/11/30 Python
利用python实现汉诺塔游戏
2021/03/01 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
linux面试相关问题
2012/08/11 面试题
个人找工作求职简历的自我评价
2013/10/20 职场文书
简历的自荐信
2013/12/19 职场文书
物流合作计划书
2014/01/10 职场文书
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
逃出克隆岛观后感
2015/06/09 职场文书