Private variabler i Python

i faktiske termer (praktisk taget) har python ikke noget, der hedder privat medlemsvariabel i Python. Tilføjelse af to understregninger (__) i begyndelsen gør imidlertid en variabel eller en metode privat er den konvention, der bruges af de fleste python-koder.

lad os forstå dette koncept gennem 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 ovenstående program er __privMeth en privat metode, og __privateVar er en privat variabel. Lad os se dens output nu –

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 ovenstående output kan vi se, at uden for klassen “myClass” kan du ikke få adgang til den private metode såvel som den private variabel. Men inde i klassen (myClass) kan vi få adgang til de private variabler. I hello () – metoden kan _ _ privateVar-variablen fås (som vist ovenfor:”privat variabel værdi: 27″).

så fra ovenstående eksempel kan vi forstå, at alle variabler og metoder i klassen er offentlige ved metoden. Når vi erklærer datamedlem som privat betyder det, at de kun er tilgængelige side af klassen og er utilgængelige uden for klassen. Teknikken til at gøre en variabel eller metode privat kaldes datamangling. Enhver identifikator for formularen _ _ spam(mindst to førende understregninger, højst en efterfølgende understregning) erstattes tekstmæssigt med _classname__spam, hvor classname er det aktuelle klassenavn med en førende understregning(er) fjernet. Denne mangling sker uden hensyntagen til identifikatorens syntaktiske position, så længe den forekommer inden for definitionen af en klasse.

Dobbelt understregningsnavne er beregnet til at undgå utilsigtet tilsidesættelse af en underklasse i stedet.

raja

udgivet den 19-Feb-2019 16:59:04

reklamer

Related Posts

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *