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

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



  • 相关阅读:
    MongoDB开发应用实战
    throw 与 throws的应用
    JAVA异常
    【354】Numpy 相关函数应用
    【353】线性回归损失函数求导举例
    【352】矩阵转置性质
    【351】实数对向量求导公式及推导
    【350】机器学习中的线性代数之矩阵求导
    智能电视TV开发---客户端和服务器通信
    GPS两点的距离
  • 原文地址:https://www.cnblogs.com/skyhacker/p/2335108.html
Copyright © 2011-2022 走看看