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...

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



  • 相关阅读:
    学习 iOS多线程开发 Demo示意
    python(数字Number)
    python(元组)
    python(列表)
    python(一)
    APP自动化测试框架搭建(转载)
    Appium真机运行Device Name获取方法
    关于android sdk manager在下载包时没有android intel x86 atom system image等项
    adb shell命令查看当前与用户交互的activity
    SDK更新
  • 原文地址:https://www.cnblogs.com/skyhacker/p/2335108.html
Copyright © 2011-2022 走看看