python 变量前的 单下划线 双下划线
程序员文章站
2022-03-09 09:29:48
...
转自: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”方法