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

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



  • 相关阅读:
    HTTPS之acme.sh申请证书
    GoAccess日志分析工具
    KVM之CPU虚拟化
    自动化运维之PSSH
    Hadoop+HBase 集群搭建
    SSH + Google Authenticator 安全加固
    查看数据的类型(python)
    在word中,替换多个词语。正则表达式中 [] {} 是可以连用的(python)
    方差分析的前提,与检验,以及球形检验
    清屏处理(汇编)
  • 原文地址:https://www.cnblogs.com/skyhacker/p/2335108.html
Copyright © 2020-2023  润新知