Python中的私有变量

实际上(实际上),python在Python中没有所谓的私有成员变量。但是,在开头添加两个下划线(__)会使变量或方法私有,这是大多数python代码使用的约定。

让我们通过一个例子来理解这个概念-

privateVar1.py

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是当前类名,前导下划线被去除。只要不存在标识符的语法位置,就可以进行这种改写,只要它出现在类的定义内即可。

双下划线名称是为了避免被子类意外覆盖。