zoukankan      html  css  js  c++  java
  • python 类私有化

      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/<ipython console> in <module>()
    8
    9 AttributeError: Secretive instance has no attribute '__inaccessible'

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

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

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

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



  • 相关阅读:
    html position定位
    设置input标签的placeholder的样式
    由于html元素加载导致的问题
    js setInterval参数设置
    .mht文件转换为html
    js异步导致的错误
    Premiere入门1 —— PR的下载、安装与优化
    Photoshop入门1 —— PS的下载、安装与优化
    Python正课25 —— 文件处理
    Python问题集
  • 原文地址:https://www.cnblogs.com/skyhacker/p/2335108.html
Copyright © 2011-2022 走看看