实际上(实际上),python在Python中没有所谓的私有成员变量。但是,在开头添加两个下划线(__)会使变量或方法私有,这是大多数python代码使用的约定。
让我们通过一个例子来理解这个概念-
class myClass: __privateVar = 27; def __privMeth(self): print("I'm inside class myClass") def hello(self): print("Private Variable value: ",myClass.__privateVar) foo = myClass()foo.hello() foo.__privateMeth
在上面的程序中,__privMeth是私有方法,而__privateVar是私有变量。现在让我们看看其输出-
输出结果
Private Variable value: 27 Traceback (most recent call last): File "C:/Python/Python361/privateVar1.py", line 12, in <module> foo.__privateMeth AttributeError: 'myClass' object has no attribute '__privateMeth'
从上面的输出中,我们可以看到,在类“ myClass”之外,您无法访问私有方法以及私有变量。但是,在类(myClass)内部,我们可以访问私有变量。在该hello()
方法中,可以访问__privateVar变量(如上所示:“私有变量值:27”)。
因此,从上面的示例可以看出,该类中的所有变量和方法都是通过该方法公开的。当我们将数据成员声明为私有时,这意味着它们只能在类外部访问,而在类外部无法访问。使变量或方法私有的技术称为数据处理。形式为__spam的任何标识符(至少两个前导下划线,至多一个下划线)在文本上被_classname__spam替换,其中classname是当前类名,前导下划线被去除。只要不存在标识符的语法位置,就可以进行这种改写,只要它出现在类的定义内即可。
双下划线名称是为了避免被子类意外覆盖。