【发布时间】:2011-10-21 11:28:15
【问题描述】:
当尝试从一个类访问__variables 时,解析器假定两个下划线相对于当前类是私有的。注意一个不相关的函数是如何获得一个“私有”变量的。
这是一个错误吗?
>>> def f(): 通过 ... >>> A类: ...定义克(自我): ... f.__x = 1 ... 定义 h(): ... 经过 ... h.__y = 2 ...返回 h ... >>> z = A().g() >>> 目录(z) ['_A__y','__call__','__class__','__delattr__','__dict__','__doc__','__get_ _','__getattribute__','__hash__','__init__','__module__','__name__','__new __','__reduce__','__reduce_ex__','__repr__','__setattr__','__str__','func_ 闭包','func_code','func_defaults','func_dict','func_doc','func_globals', 'func_name'] >>> 目录(f) ['_A__x','__call__','__class__','__delattr__','__dict__','__doc__','__get_ _','__getattribute__','__hash__','__init__','__module__','__name__','__new __','__reduce__','__reduce_ex__','__repr__','__setattr__','__str__','func_ 闭包','func_code','func_defaults','func_dict','func_doc','func_globals', 'func_name']在 python 2.5 和 3.2 上测试
【问题讨论】:
-
按预期工作。诚然,您对它们所做的事情是不寻常的,但这些属性属于该类,无论它们碰巧在哪里。