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
    





  • 相关阅读:
    Go语言学习之1 基本概念、环境搭建、第一个Go程序
    go环境搭建
    go 圣经阅读笔记之-入门
    RabbitMQ
    图片选择并使用base64展示
    关于c# hashtable的一个注意点
    js image to base64 摘录
    linq to sql 获取sql与参数添加到日志中
    时钟的实现
    无限级菜单的实现
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7106422.html
Copyright © 2011-2022 走看看