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>