Soukromé Proměnné v Pythonu

V aktuální termíny (prakticky), python nemá nic volal soukromé členské proměnné v Pythonu. Nicméně, přidání dvou podtržení(__) na začátku je proměnná nebo metoda je soukromé úmluvy používá většina python kód.

Pojďme pochopit tento koncept pomocí příkladu −

privateVar1.py

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

Ve výše uvedeném programu, __privMeth je privátní metoda a __privateVar je privátní proměnná. Pojďme se podívat, jeho výstupní teď −

Výstup

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'

Z výše uvedeného výstupu, můžeme vidět, že mimo třídy „myClass“, nelze získat přístup k soukromé metody, stejně jako privátní proměnné. Uvnitř třídy (myClass) však můžeme přistupovat k soukromým proměnným. V metodě hello () lze přistupovat k proměnné _ _ privateVar (jak je uvedeno výše: „hodnota soukromé proměnné: 27“).

takže z výše uvedeného příkladu můžeme pochopit, že všechny proměnné a metody uvnitř třídy jsou metodou veřejné. Když deklarujeme datový člen jako soukromý, znamená to, že jsou přístupné pouze vedle třídy a jsou mimo třídu nepřístupné. Technika vytváření proměnné nebo metody soukromé se nazývá mandlování dat. Jakýkoliv identifikátor formuláře __spamu (alespoň dvě přední podtržítka, na jedné koncové podtržítko) je textově nahrazen _classname__spamu, kde classname je aktuální název třídy s vedoucí podtržítko(s) svlékl. Toto mandlování se provádí bez ohledu na syntaktickou pozici identifikátoru, pokud se vyskytuje v definici třídy.

Názvy podtržítek mají zabránit náhodnému přepsání podtřídy.

raja

Zveřejněny na 19-Feb-2019 16:59:04

Inzeráty

Related Posts

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *