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

转自:https://blog.csdn.net/u013205877/article/details/77427785 

 

1.单下划线

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

例子:

class convertstrtoint:
    _name = "zhangkun333"
    __namedede = "zhangkun444"

print convertstrtoint._name
print convertstrtoint.__namedede
#输出
zhangkun333
Traceback (most recent call last):
  File "C:/zqxt/devnav/pythonnav/test.py", line 74, in <module>
    print convertstrtoint.__namedede
AttributeError: 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 = s

print convertstrtoint._name
rrr = convertstrtoint()
print rrr.get_namedede()
you = "you"
rrr.set_namedede(you)
print rrr.get_namedede()


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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章