zoukankan      html  css  js  c++  java
  • python无私有成员变量

    python解释器将__init__函数里的__z变量转成 _classname__z了,明确规则后外部依旧能够通过实力对象来訪问。

    In [1]: class aa:
       ...:     def __init__(self):
       ...:         self.x = 10
       ...:         self.y = 11
       ...:         self.__z = 12
       ...:     
    
    In [2]: a = aa()
    
    In [3]: print a.x
    10
    
    In [4]: print a.y
    11
    
    In [5]: print a.__z
    ---------------------------------------------------------------------------
    AttributeError                            Traceback (most recent call last)
    <ipython-input-5-a90abb2fd47d> in <module>()
    ----> 1 print a.__z
    
    AttributeError: aa instance has no attribute '__z'
    
    In [6]: dir(a)
    Out[6]: ['__doc__', '__init__', '__module__', '_aa__z', 'x', 'y']
    
    In [7]: print _aa.__z
    ---------------------------------------------------------------------------
    NameError                                 Traceback (most recent call last)
    <ipython-input-7-b2d0b9a63937> in <module>()
    ----> 1 print _aa.__z
    
    NameError: name '_aa' is not defined
    
    In [8]: print _aa__z
    ---------------------------------------------------------------------------
    NameError                                 Traceback (most recent call last)
    <ipython-input-8-80bb4dde0a55> in <module>()
    ----> 1 print _aa__z
    
    NameError: name '_aa__z' is not defined
    
    In [9]: print a._aa__z
    12
    
    In [10]: a.__z = 14
    
    In [11]: dir(a)
    Out[11]: ['__doc__', '__init__', '__module__', '__z', '_aa__z', 'x', 'y']
    
    In [12]: print a._aa__z
    12
    





  • 相关阅读:
    ASP.NET常见命名空间及其功能描述
    C#中的里氏替换原则
    Java中的split函数的用法
    shader之旅-7-平面阴影(planar shadow)
    OpenGL三角形的双面不同颜色的绘制
    MATLAB squeeze 函数
    matlab 常用函数汇总
    第一个OpenGL程序
    Github 留言系统
    Paging 简单自由的分页生成器
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3806405.html
Copyright © 2011-2022 走看看