python 变量前的 单下划线 双下划线

来源:互联网 发布:善领dsa2016最新数据 编辑:程序博客网 时间:2024/05/17 21:58

1.单下划线

变量前的单下划线表示表面上私有
但是其实这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。

例子:

class convertstrtoint:    _name = "zhangkun333"    __namedede = "zhangkun444"print convertstrtoint._nameprint convertstrtoint.__namedede
#输出zhangkun333Traceback (most recent call last):  File "C:/zqxt/devnav/pythonnav/test.py", line 74, in <module>    print convertstrtoint.__namededeAttributeError: class convertstrtoint has no attribute '__namedede'

2.双下划线

变量前的单下划线表示真正的私有,实际上的私有,只有内部可以访问,外部不能访问
但是有窍门,可以在类里面增加get__namedede和set__namedede这样的方法来突破限制,而且还能在方法里做验证

例子

class convertstrtoint:    _name = "zhangkun333"    __namedede = "zhangkun444"    def get_namedede(self):        return self.__namedede    def set_namedede(self,s):        self.__namedede = sprint convertstrtoint._namerrr = convertstrtoint()print rrr.get_namedede()you = "you"rrr.set_namedede(you)print rrr.get_namedede()

其他(如:init):名称前后的双下划线是一种惯例,对Python系统来说,这将确保不会与用户自定义的名称冲突。通常,你将会覆写这些方法,并在里面实现你所需要的功能,以便Python调用它们。例如,当定义一个类时,你经常会覆写“init”方法