Přehled zapouzdření v Pythonu

Zapouzdření je jedním ze čtyř základních konceptů objektově orientovaného programování. Pokud existuje požadavek na seskupení dat a jejich následných podprogramů, které spolupracují a fungují na jednom místě spolu s potřebou skrýt složité detaily před uživatelem, používáme zapouzdření, abychom porozuměli „zapouzdření v Pythonu“, musíme se hlouběji ponořit a porozumět jak zapouzdření přijde na obrázek v programovacím jazyce. Zapouzdření pomáhá omezovat přístup k metodám a proměnným. Zabránění jakékoli náhodné úpravě dat, čehož je dosaženo pomocí metod neveřejné proměnné instance a neveřejné proměnné instance. Třída zapouzdřuje metody a proměnné.

Jméno Mangling v Pythonu

Python znamená omezení přístupu k datům. V Pythonu nejsou žádné modifikátory explicitního přístupu, ale přístup lze ovládat pomocí Name Mangling. Ve výchozím nastavení jsou všechny metody a proměnné v Pythonu veřejné. Pokud tedy nějaký identifikátor má dvě přední podtržítka, stane se v Pythonu neveřejnou instancí. Zde bychom specifikovali neveřejné proměnné a metody instance, abychom lépe porozuměli zapouzdření. Metoda neveřejné instance je v rámci své vlastní třídy a začíná jedním podtržítkem nebo dvěma podtržítky, tj. Před proměnnou nebo metodou je dvojité „_“ nebo „__“. Rozsah neveřejné instance proměnné je také ve své vlastní třídě nebo metodou, ve které je definován, a začíná také dvěma podtržítky. Pokud náhodou zmeškáme dvě podtržítka, pak je tato metoda považována za veřejnou. Než pochopíme zapouzdření v Pythonu, musíme pochopit, jak fungují veřejné a neveřejné proměnné a metody instance.

Proměnné neveřejné instance

V Pythonu neexistuje žádný pojem „soukromý“, protože žádný atribut není v Pythonu skutečně soukromý (o základní alternativě se budeme bavit později v článku). Místo toho je označujeme jako proměnnou neveřejné instance. Takto bychom tímto odkazovali na soukromé proměnné a soukromé metody.

Zde je malý zlomek kódu v pythonu pro neveřejné proměnné instance:

Používáme vlastní klíčové slovo, protože přistupujeme k proměnné třídy. Výstup je:

K načtení potvrzení o rozsahu proměnné non-public instance přidáme tisk (abc .__ a) do kódu:

A vrácený výstup je:

Vidíme tedy, že mimo třídu nemůžeme používat neveřejné proměnné instance.

Metody neveřejné instance

Funkci neveřejné instance nelze na objekt volat přímo, ale pouze v rámci třídy.

V tomto fragmentu kódu máme dvě metody, jednu neveřejnou instanci a druhou veřejnou metodu. Veřejnou metodu lze snadno vyvolat vytvořením objektu třídy abc a jeho výstup se vytiskne.

Při pokusu o podobný přístup pro metodu neveřejné instance čelíme následující chybě:

Tento program vytvoří následující výstup:

Proto není možné získat přístup k neveřejné instanční metodě vytvořením objektu. Pro přístup k neveřejné instanci můžeme zavolat metodu __show1 () z metody show2 () stejné třídy. Takto můžeme zobrazit metodu neveřejné instance z veřejné metody stejné třídy.

Výstup:

Metodu neveřejné instance tedy nelze volat mimo její třídu.

Nepřímý způsob přístupu k proměnné neveřejné instance

Z legitimních důvodů nelze k neveřejným instančním instancím přistupovat mimo třídu, existuje však nepřímý způsob, jak upravit hodnotu proměnné neveřejných instancí a přistupovat pomocí objektů. Podíváme se na níže uvedený fragment kódu:

Výstup:

Ve výše uvedeném programu máme veřejné metody getNumber (self, num) a displayNumber () a jednu neveřejnou proměnnou instance. Při vyvolání první metody přiřadíme hodnotu proměnné neveřejné instance, která se nazývá metoda displayNumber ().

Metoda setter se používá k nastavení hodnoty proměnné non-public instance. To je užitečné ve scénářích, kdy budete chtít po vytvoření objektů pro konkrétní proměnnou změnit hodnotu neveřejné instance.

Výhody zapouzdření v Pythonu

Zapouzdření pomáhá zajistit lepší tok dat a také ochranu dat. Koncept zapouzdření činí kód soběstačným. Zapouzdření poskytuje velkou pomoc na úrovni implementace, protože se primárně zaměřuje na otázku „jak“ ponechat komplex „kdy / kde“ a jeho složitosti pozadu. Skrytí dat do jednotky usnadňuje zapouzdření a také zajišťuje data.

Proč potřebujeme zapouzdření v Pythonu?

Níže je uvedeno několik důvodů, proč by vývojáři považovali koncept zapouzdření za užitečný a proč jsou koncepty orientované na objekt ovládány ve většině programovacích jazyků, které běží v současném scénáři.

  • V každé aplikaci je potřeba dobře definovaná interakce. Zapouzdření napomáhá dosažení tohoto cíle.
  • Koncept programování orientace objektů v pythonu se zaměřuje na vytváření opakovaně použitelných kódů. Toto je také zkráceno jako DRY (Don't Repeat Yourself).
  • Údržba aplikace je snazší a je zajištěna bezpečnost.
  • Jasnost postupu kódování, protože vývojáři se musí zabývat cílem dané třídy a komplexnost je řešena systematicky.
  • Správná organizace kódů pomáhá s flexibilitou kódu a také pomáhá při testování jednotek.
  • Pro uživatele je snadné používat systém, protože jsou skryti před složitým designem, který je součástí backendu.
  • Mít všechna podobná data na jednom místě a zapouzdřit zvyšuje soudržnost uvnitř modulu.
  • Zlepšuje čitelnost kódů a změny v jedné části kódu nenarušují ostatní části kódu.
  • Zapouzdření zabraňuje náhodnému přístupu k části kódu, ale ne úmyslně, protože objekty uchovávají kritická data pro aplikace a měly by být změněny kdekoli v kódu.

Závěr - Zapouzdření v Pythonu

Zjednodušeně řečeno Zapouzdření v Pythonu znamená, že interní reprezentace objektu je obecně skryta před pohledem mimo definici objektu. To pomáhá vývojáři vyvinout uživatelsky přívětivé prostředí pro koncového uživatele a je zajištěna ochrana před narušením zabezpečení, protože jsou kódy zabezpečeny.

Doporučené články

Toto je průvodce zapouzdřením v Pythonu. Zde diskutujeme o potřebách zapouzdření v pythonu spolu s jeho neveřejnými proměnnými instance a metodami instance. Další informace naleznete také v následujících článcích -

  1. Co je Python
  2. Je Python Object Oriented
  3. Vzory v Pythonu
  4. Jak používat zapouzdření v C ++?
  5. Zapouzdření do Java | Příklady
  6. Zapouzdření v C (pracovní, příklady)
  7. Úvod do zapouzdření v JavaScriptu

Kategorie: