logo

Súkromné ​​metódy v Pythone

Zapuzdrenie je jedným zo základných pojmov v objektovo orientované programovanie (OOP) v Pythone. Popisuje myšlienku zabaľovania údajov a metódy, ktoré pracujú s údajmi v rámci jednej jednotky. To kladie obmedzenia na priamy prístup k premenným a metódam a môže zabrániť náhodnej modifikácii údajov. Trieda je príkladom zapuzdrenia, pretože zahŕňa všetky údaje, ktoré sú členom funkcie , premenné , atď. Teraz môže nastať niekoľko scenárov, v ktorých musíme obmedziť niektoré metódy triedy tak, aby k nim nebolo možné pristupovať mimo triedy ani zo žiadnej podtriedy. Na implementáciu tohto prichádzajú do hry súkromné ​​metódy.

Private funkcie v Pythone

Zoberme si príklad zo skutočného života, motor auta, ktorý sa skladá z mnohých častí, ako sú zapaľovacie sviečky, ventily, piesty atď. Žiadny používateľ tieto časti priamo nepoužíva, skôr len vie, ako používať časti, ktoré ich používajú. Na to sa používajú súkromné ​​metódy. Používa sa na skrytie vnútornej funkčnosti akejkoľvek triedy pred vonkajším svetom. Súkromné ​​metódy sú tie metódy, ku ktorým by sa nemalo pristupovať mimo triedy ani zo žiadnej základnej triedy. V Pythone neexistujú súkromné ​​metódy, ku ktorým nie je možné pristupovať inak ako v rámci triedy. Ak však chcete definovať súkromnú metódu, pred názov člena zadajte reťazec dvojité podčiarknutie __ . Poznámka: Metóda __init__ je a konštruktér a spustí sa hneď, ako sa vytvorí inštancia objektu triedy.



Python3






bash spánok



# Creating a Base class> class> Base:> ># Declaring public method> >def> fun(>self>):> >print>(>'Public method'>)> ># Declaring private method> >def> __fun(>self>):> >print>(>'Private method'>)> # Creating a derived class> class> Derived(Base):> >def> __init__(>self>):> ># Calling constructor of> ># Base class> >Base.__init__(>self>)> >def> call_public(>self>):> ># Calling public method of base class> >print>(>' Inside derived class'>)> >self>.fun()> >def> call_private(>self>):> ># Calling private method of base class> >self>.__fun()> # Driver code> obj1>=> Base()> # Calling public method> obj1.fun()> obj2>=> Derived()> obj2.call_public()> # Uncommenting obj1.__fun() will> # raise an AttributeError> # Uncommenting obj2.call_private()> # will also raise an AttributeError>

>

ako získať emotikony iphone na android

>

Výkon:

Public method Inside derived class Public method>
Traceback (most recent call last): File '/home/09d6f91fdb63d16200e172c7a925dd7f.py', line 43, in obj1.__fun() AttributeError: 'Base' object has no attribute '__fun' Traceback (most recent call last): File '/home/0d5506bab8f06cb7c842501d9704557b.py', line 46, in obj2.call_private() File '/home/0d5506bab8f06cb7c842501d9704557b.py', line 32, in call_private self.__fun() AttributeError: 'Derived' object has no attribute '_Derived__fun'>

Vyššie uvedený príklad ukazuje, že k súkromným metódam triedy nie je možné pristupovať mimo triedy ani zo žiadnej základnej triedy. K súkromným metódam však možno pristupovať volaním súkromných metód prostredníctvom verejných metód.

Príklad:

Python3


npm clean cache force



# Creating a class> class> A:> ># Declaring public method> >def> fun(>self>):> >print>(>'Public method'>)> ># Declaring private method> >def> __fun(>self>):> >print>(>'Private method'>)> ># Calling private method via> ># another method> >def> Help>(>self>):> >self>.fun()> >self>.__fun()> # Driver's code> obj>=> A()> obj.>Help>()>

>

>

Výkon:

Public method Private method>

Mangľovanie mien

Python poskytuje čarovný prútik, ktorý možno použiť na volanie súkromných metód aj mimo triedy, je známy ako mangľovanie mien. Znamená to, že akýkoľvek identifikátor v tvare __geek (aspoň dve podčiarkovníky na začiatku alebo maximálne jedno podčiarknutie na konci) sa nahradí _classname__geek, kde názov triedy je aktuálny názov triedy s odstráneným podčiarkovníkom na začiatku.

expertné systémy

Príklad:

Python3




# Creating a class> class> A:> ># Declaring public method> >def> fun(>self>):> >print>(>'Public method'>)> ># Declaring private method> >def> __fun(>self>):> >print>(>'Private method'>)> # Driver's code> obj>=> A()> # Calling the private member> # through name mangling> obj._A__fun()>

modely strojového učenia

>

>

Výkon:

Private method>