zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python变量前的单下划线(私有变量)和双下划线()详解编程语言

Python变量编程语言 详解 私有 下划线
2023-06-13 09:11:48 时间
1.单下划线

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

2.双下划线

变量前的双下划线表示真正的私有,实际上的私有,只有内部可以访问,外部不能访问 

但是有窍门,可以在类里面增加get__namedede和set__namedede这样的方法来突破限制,而且还能在方法里做验证。

3.其他(如:init):

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

总结:


_name = "WinerChan111" # 伪私有变量 __namedede = "WinerChan222" # 真正私有变量,但是增加get__namedede和set__namedede实例方法可访问 def get_namedede(self):
return self.__namedede

def set_namedede(self,s):
self.__namedede = s

print(MyName._name) print(MyName.__namedede) #############输出####################### class MyName: ... _name = "w1" ... __namedede = "w2" print(MyName._name) print(MyName.__namedede) Traceback (most recent call last): File " stdin ", line 1, in module AttributeError: type object MyName has no attribute __namedede
_name = "WinerChan111" # 伪私有变量 __namedede = "WinerChan222" # 真正私有变量,但是增加get__namedede和set__namedede实例方法可访问 def get_namedede(self):
return self.__namedede

def set_namedede(self,s):
self.__namedede = s

print(MyName._name) print(MyName.__namedede)

###########输出###########