首页 > 代码库 > python无私有成员变量
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。