i faktiska termer (praktiskt taget) har python inget som kallas privat medlemsvariabel i Python. Men att lägga till två understrykningar (__) i början gör en variabel eller en metod privat är konventionen som används av de flesta python-kod.
låt oss förstå detta koncept genom ett exempel –
privateVar1.py
Live Demo
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
i ovanstående program är __privMeth en privat metod och __privateVar är en privat variabel. Låt oss se dess utgång nu –
utgång
Private Variable value: 27Traceback (most recent call last): File "C:/Python/Python361/privateVar1.py", line 12, in <module> foo.__privateMethAttributeError: 'myClass' object has no attribute '__privateMeth'
från ovanstående utgång kan vi se att utanför klassen” myClass ” kan du inte komma åt den privata metoden såväl som den privata variabeln. Men inom klassen (myClass) kan vi komma åt de privata variablerna. I hello () – metoden kan _ _ privateVar-variabeln nås (som visas ovan: ”privat variabelvärde: 27”).
så från ovanstående exempel kan vi förstå att alla variabler och metoder inom klassen är offentliga med metoden. När vi förklarar datamedlem som privat betyder det att de är tillgängliga endast sida klassen och är otillgängliga utanför klassen. Tekniken att göra en variabel eller metod privat kallas data mangling. Varje identifierare av formuläret _ _ spam(minst två ledande understreck, högst ett efterföljande understreck) ersätts textuellt med _classname__spam, där classname är det aktuella klassnamnet med ett ledande understreck (er) avskalat. Denna mangling görs utan hänsyn till identifierarens syntaktiska position, så länge den förekommer inom definitionen av en klass.
dubbla understrecknamn är avsedda att undvika oavsiktlig åsidosättning av en underklass istället.