Objektově orientované programování je základní koncept v Pythonu, který umožňuje vývojářům vytvářet modulární, udržovatelné a škálovatelné aplikace. Díky pochopení základních OOP principů – tříd, objektů, dědičnosti, zapouzdření, polymorfismu a abstrakce – mohou programátoři využít plný potenciál OOP schopností Pythonu k navrhování elegantních a účinných řešení složitých problémů.
Co je objektově orientované programování v Pythonu?
V Pythonu je objektově orientované programování (OOPs) programovací paradigma, které v programování používá objekty a třídy. Jeho cílem je implementovat do programování entity reálného světa, jako je dědičnost, polymorfismy, zapouzdření atd. Hlavním konceptem objektově orientovaného programování (OOP) nebo konceptů oops v Pythonu je svázat data a funkce, které spolupracují jako jeden celek, takže žádná jiná část kódu k těmto datům nemá přístup.
OOPs koncepty v Pythonu
- Třída v Pythonu
- Objekty v Pythonu
- Polymorfismus v Pythonu
- Zapouzdření v Pythonu
- Dědičnost v Pythonu
- Abstrakce dat v Pythonu

Koncepty Python OOPs
Třída Python
Třída je kolekce objektů. Třída obsahuje plány nebo prototyp, ze kterého jsou objekty vytvářeny. Je to logická entita, která obsahuje nějaké atributy a metody.
řetězcový formát java
Abychom pochopili potřebu vytvoření třídy, uvažujme příklad, řekněme, že jste chtěli sledovat počet psů, kteří mohou mít různé atributy, jako je plemeno a věk. Pokud je použit seznam, první prvek může být plemeno psa, zatímco druhý prvek může představovat jeho věk. Předpokládejme, že existuje 100 různých psů, jak byste pak věděli, který prvek má být který? Co kdybyste těmto psům chtěli přidat další vlastnosti? To postrádá organizaci a je to přesná potřeba tříd.
Některé body třídy Python:
- Třídy jsou vytvářeny klíčovým slovem class.
- Atributy jsou proměnné, které patří do třídy.
- Atributy jsou vždy veřejné a lze k nim přistupovat pomocí operátoru tečka (.). Např.: Myclass.Myatribute
Syntaxe definice třídy:
class ClassName: # Statement-1 . . . # Statement-N>
Vytvoření prázdné třídy v Pythonu
Ve výše uvedeném příkladu jsme vytvořili třídu s názvem Pes pomocí klíčového slova class.
datum převodu řetězceKrajta
# Python3 program to # demonstrate defining # a class class Dog: pass>
Objekty Pythonu
V objektově orientovaném programování Python je objekt entita, která má stav a chování, které je s ní spojeno. Může to být jakýkoli objekt reálného světa, jako je myš, klávesnice, židle, stůl, pero atd. Celá čísla, řetězce, čísla s plovoucí desetinnou čárkou, dokonce pole a slovníky jsou všechny objekty. Přesněji řečeno, jakékoli jediné celé číslo nebo jakýkoli jednotlivý řetězec je objekt. Číslo 12 je objekt, řetězec Hello, world je objekt, seznam je objekt, který pojme další objekty a tak dále. Po celou dobu jste používali předměty a možná si to ani neuvědomujete.
Objekt se skládá z:
- Stát: Je reprezentován atributy objektu. Odráží také vlastnosti objektu.
- Chování: Je reprezentován metodami objektu. Odráží také reakci objektu na jiné objekty.
- Identita: Přiděluje objektu jedinečný název a umožňuje interakci jednoho objektu s jinými objekty.
Abychom pochopili stav, chování a identitu, vezměme si příklad třídního psa (vysvětleno výše).
- Identita může být považována za jméno psa.
- Stav nebo atributy lze považovat za plemeno, věk nebo barvu psa.
- Chování může být považováno za to, zda pes jí nebo spí.
Vytvoření objektu
Tím se vytvoří objekt s názvem obj třídy Dog definované výše. Než se ponoříme hluboko do objektů a tříd, pochopme některá základní klíčová slova, která se budou používat při práci s objekty a třídami.
Python3 obj = Dog()>
Vlastní Python
- Metody třídy musí mít v definici metody další první parametr. Při volání metody nezadáváme tomuto parametru hodnotu, poskytuje ji Python
- Pokud máme metodu, která nebere žádné argumenty, pak stále musíme mít jeden argument.
- To je podobné tomuto ukazateli v C++ a tomuto odkazu v Javě.
Když zavoláme metodu tohoto objektu jako myobject.method(arg1, arg2), Python ji automaticky převede na MyClass.method(myobject, arg1, arg2) – o tom je speciální já.
Poznámka: Další informace viz sebe ve třídě Python
Metoda Python __init__
The __init__ metoda je podobný konstruktorům v C++ a Javě. Spustí se, jakmile je vytvořena instance objektu třídy. Metoda je užitečná k provedení jakékoli inicializace, kterou chcete s objektem provést. Nyní definujeme třídu a vytvoříme nějaké objekty pomocí metody self a __init__.
Vytvoření třídy a objektu s atributy třídy a instance
Python3 class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class attributes print('Rodger is a {}'.format(Rodger.__class__.attr1)) print('Tommy is also a {}'.format(Tommy.__class__.attr1)) # Accessing instance attributes print('My name is {}'.format(Rodger.name)) print('My name is {}'.format(Tommy.name))> Výstup
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>
Vytváření tříd a objektů pomocí metod
Zde je třída Pes definována se dvěma atributy:
- attr1 je atribut třídy nastavený na hodnotu savec . Atributy třídy jsou sdíleny všemi instancemi třídy.
- __init__ je speciální metoda (konstruktor), která inicializuje instanci třídy Dog. Vyžaduje dva parametry: self (odkazující na vytvářenou instanci) a jméno (reprezentující jméno psa). Parametr name se používá k přiřazení atributu name ke každé instanci Dog.
Metoda speak je definována v rámci třídy Dog. Tato metoda vytiskne řetězec, který obsahuje název instance psa.
Kód ovladače začíná vytvořením dvou instancí třídy Dog: Rodger a Tommy. Pro každou instanci je volána metoda __init__, aby se inicializovaly jejich atributy jmen pomocí zadaných jmen. Metoda speak se volá v obou případech (Rodger.speak() a Tommy.speak()), což způsobí, že každý pes vytiskne prohlášení se svým jménem.
jarní poznámky botPython3
class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name def speak(self): print('My name is {}'.format(self.name)) # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class methods Rodger.speak() Tommy.speak()> Výstup
My name is Rodger My name is Tommy>
Poznámka: Další informace viz Třídy a objekty Pythonu
Dědičnost Pythonu
V objektově orientovaném programování Pythonu je dědičnost schopností jedné třídy odvozovat nebo zdědit vlastnosti z jiné třídy. Třída, která odvozuje vlastnosti, se nazývá odvozená třída nebo podřízená třída a třída, ze které jsou vlastnosti odvozeny, se nazývá základní třída nebo rodičovská třída. Výhody dědictví jsou:
- Dobře reprezentuje vztahy v reálném světě.
- Poskytuje opětovnou použitelnost kódu. Nemusíme psát stejný kód znovu a znovu. Také nám umožňuje přidávat další funkce do třídy, aniž bychom ji upravovali.
- Má tranzitivní povahu, což znamená, že pokud třída B dědí z jiné třídy A, pak všechny podtřídy B automaticky zdědí z třídy A.
Typy dědičnosti
- Jediné dědictví : Jednoúrovňová dědičnost umožňuje odvozené třídě dědit vlastnosti z jedné nadřazené třídy.
- Víceúrovňová dědičnost: Víceúrovňová dědičnost umožňuje odvozené třídě dědit vlastnosti od bezprostřední nadřazené třídy, která zase dědí vlastnosti od své nadřazené třídy.
- Hierarchická dědičnost: Dědičnost na hierarchické úrovni umožňuje více než jedné odvozené třídě dědit vlastnosti z nadřazené třídy.
- Vícenásobná dědičnost: Víceúrovňová dědičnost umožňuje jedné odvozené třídě dědit vlastnosti z více než jedné základní třídy.
Dědičnost v Pythonu
Ve výše uvedeném článku jsme vytvořili dvě třídy, tj. Osoba (rodičovská třída) a Zaměstnanec (třída Child). Třída Zaměstnanec dědí z třídy Osoba. Můžeme použít metody třídy osoby prostřednictvím třídy zaměstnance, jak je vidět ve funkci zobrazení ve výše uvedeném kódu. Podřízená třída může také upravit chování nadřazené třídy, jak je vidět prostřednictvím metody details().
Python3 # Python code to demonstrate how parent constructors # are called. # parent class class Person(object): # __init__ is known as the constructor def __init__(self, name, idnumber): self.name = name self.idnumber = idnumber def display(self): print(self.name) print(self.idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) # child class class Employee(Person): def __init__(self, name, idnumber, salary, post): self.salary = salary self.post = post # invoking the __init__ of the parent class Person.__init__(self, name, idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) print('Post: {}'.format(self.post)) # creation of an object variable or an instance a = Employee('Rahul', 886012, 200000, 'Intern') # calling a function of the class Person using # its instance a.display() a.details()> Výstup
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>
Poznámka: Další informace naleznete v naší Dědičnost v Pythonu tutorial.
Polymorfismus Pythonu
V objektově orientovaném programování Python polymorfismus jednoduše znamená mít mnoho podob. Potřebujeme například určit, zda daný druh ptáků létá nebo ne, pomocí polymorfismu to můžeme udělat pomocí jediné funkce.
Polymorfismus v Pythonu
Tento kód demonstruje koncept dědičnosti Python oops a přepisování metod ve třídách Pythonu. Ukazuje, jak mohou podtřídy přepsat metody definované ve své nadřazené třídě, aby poskytovaly specifické chování a přitom stále dědily jiné metody z nadřazené třídy.
Python3 class Bird: def intro(self): print('There are many types of birds.') def flight(self): print('Most of the birds can fly but some cannot.') class sparrow(Bird): def flight(self): print('Sparrows can fly.') class ostrich(Bird): def flight(self): print('Ostriches cannot fly.') obj_bird = Bird() obj_spr = sparrow() obj_ost = ostrich() obj_bird.intro() obj_bird.flight() obj_spr.intro() obj_spr.flight() obj_ost.intro() obj_ost.flight()> Výstup
There are many types of birds. Most of the birds can fly but some cannot. There are many types of birds. Sparrows can fly. There are many types of birds. Ostriches cannot fly.>
Poznámka: Další informace naleznete v naší Polymorfismus v Pythonu Tutorial.
připojení java mysql
Zapouzdření Pythonu
V objektově orientovaném programování Pythonu je zapouzdření jedním ze základních konceptů objektově orientovaného programování (OOP). Popisuje myšlenku zalamování dat a metody, které pracují s daty v rámci jedné jednotky. To omezuje přímý přístup k proměnným a metodám a může zabránit náhodné úpravě dat. Aby se zabránilo náhodné změně, proměnnou objektu lze změnit pouze metodou objektu. Tyto typy proměnných jsou známé jako soukromé proměnné.
Třída je příkladem zapouzdření, protože zapouzdřuje všechna data, kterými jsou členské funkce, proměnné atd.

Zapouzdření v Pythonu
Ve výše uvedeném příkladu jsme vytvořili proměnnou c jako atribut private. K tomuto atributu nemáme ani přímý přístup a nemůžeme ani změnit jeho hodnotu.
Python3 # Python program to # demonstrate private members # '__' double underscore represents private attribute. # Private attributes start with '__'. # Creating a Base class class Base: def __init__(self): self.a = 'techcodeview.com' self.__c = 'techcodeview.com' # Creating a derived class class Derived(Base): def __init__(self): # Calling constructor of # Base class Base.__init__(self) print('Calling private member of base class: ') print(self.__c) # Driver code obj1 = Base() print(obj1.a) # Uncommenting print(obj1.c) will # raise an AttributeError # Uncommenting obj2 = Derived() will # also raise an AtrributeError as # private member of base class # is called inside derived class> Výstup
techcodeview.com>
Poznámka: pro více informací navštivte naše Zapouzdření v Pythonu Tutorial.
Abstrakce dat
Skrývá nepotřebné podrobnosti kódu před uživatelem. Také, když nechceme vydávat citlivé části implementace našeho kódu a právě zde došlo k abstrakci dat.
Abstrakce dat v Pythonu lze dosáhnout vytvořením abstraktních tříd.
Objektově orientované programování v Pythonu | Sada 2 (skrývání dat a tisk objektů)