博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 类私有化
阅读量:4315 次
发布时间:2019-06-06

本文共 943 字,大约阅读时间需要 3 分钟。

  Python并不直接支持私有方式,而要靠程序员自己把握在外部进行特性修改的时机。毕竟在使用对象前应该知道如何使用。但是,可以用一些小技巧达到私有特性的效果。

  为了让方法或者特性变为私有(从外部无法访问),只要在它的名字前面加上双下划线即可:

In [6]: class Secretive: def __inaccessible(self):    ...:         print "Bet you can't see me..."

现在__inaccessible从外界是无法访问的,而在类内部还能使用访问:

1 In [8]: s = Secretive() 2 3 In [9]: s.__inaccessible() 4 --------------------------------------------------------------------------- 5 AttributeError                            Traceback (most recent call last) 6 7 /home/skyhacker/
in
() 8 9 AttributeError: Secretive instance has no attribute '__inaccessible'

  尽管双下划线有些奇怪,但是看起来像是其他语言中的标准的私有方法。真正发生的事情才是不标准的。类的内部定义中,所有以双下划线开始的名字都被“翻译”成前面加上单下划线和类名的形式。

  在了解了这些幕后的事情后,实际上还是能在类外访问这些私有方法,尽管不应该这么做:

In [10]: s._Secretive__inaccessible() Bet you can't see me...

  简而言之,确保其他人不会访问对象的方法和特性是不可能的,但是这类“名称变化术”就是他们不应该访问这些函数或者特性的强有力信号。

转载于:https://www.cnblogs.com/skyhacker/archive/2012/02/01/2335108.html

你可能感兴趣的文章
Chap-6 6.4.2 堆和栈
查看>>
【Java学习笔记之九】java二维数组及其多维数组的内存应用拓展延伸
查看>>
C# MySql 连接
查看>>
网络抓包分析方法大全
查看>>
sql 数据类型
查看>>
android 截图
查看>>
WebServicer接口类生成方法。
查看>>
POJ 1740
查看>>
【翻译】火影忍者鸣人 疾风传 终级风暴2 制作介绍
查看>>
http和webservice
查看>>
hdu1879------------prim算法模板
查看>>
jdbc之二:DAO模式
查看>>
MySQL性能优化方法一:缓存参数优化
查看>>
Angular2 - 概述
查看>>
正则表达式tab表示\t
查看>>
NodeJS+Express+MongoDB 简单实现数据录入及回显展示【Study笔记】
查看>>
Highcharts使用指南
查看>>
网络基础(子网划分)
查看>>
Google C++ Style
查看>>
MyBatis总结八:缓存介绍(一级缓存,二级缓存)
查看>>