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 -
- Co je Python
- Je Python Object Oriented
- Vzory v Pythonu
- Jak používat zapouzdření v C ++?
- Zapouzdření do Java | Příklady
- Zapouzdření v C (pracovní, příklady)
- Úvod do zapouzdření v JavaScriptu