i faktiske termer (praktisk talt) har python ikke noe som kalles privat medlemsvariabel I Python. Men å legge til to understreker(__) i begynnelsen gjør en variabel eller en metode privat er konvensjonen som brukes av de fleste python-kode.
La oss forstå dette konseptet gjennom et eksempel –
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 programmet ovenfor er _ _ privMeth en privat metode og __privateVar er en privat variabel. La oss se sin utgang nå-
Output
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'
fra utgangen ovenfor kan vi se at utenfor klassen «myClass», kan du ikke få tilgang til den private metoden, så vel som den private variabelen. Men inne i klassen (myClass) kan vi få tilgang til de private variablene. I hei () – metoden kan _ _ privateVar-variabelen nås (som vist ovenfor: «Privat Variabel verdi: 27»).
Så fra eksemplet ovenfor kan vi forstå at alle variablene og metodene i klassen er offentlige ved metoden. Når vi erklærer datamedlem som privat, betyr det at de bare er tilgjengelige på siden av klassen og er utilgjengelige utenfor klassen. Teknikken for å lage en variabel eller metode privat kalles data mangling. Enhver identifikator av skjemaet __spam (minst to ledende understrek, høyst en etterfølgende understrek) erstattes tekstmessig med _ classname_ _ spam, der classname er det nåværende klassenavnet med en ledende understrek(er) strippet. Denne mangling gjøres uten hensyn til den syntaktiske posisjonen til identifikatoren, så lenge den forekommer innenfor definisjonen av en klasse.
doble understrekingsnavn er ment å unngå utilsiktet overstyring av en underklasse i stedet.