Predpoklady: Objektovo orientované programovanie v Pythone, objektovo orientované Python3
Python3
príklad triedy java
class> GeekforGeeks:> ># default constructor> >def> __init__(>self>):> >self>.geek>=> 'GeekforGeeks'> ># a method for printing data members> >def> print_Geek(>self>):> >print>(>self>.geek)> # creating object of the class> obj>=> GeekforGeeks()> # calling the instance method using the object obj> obj.print_Geek()> |
>
>Výkon
GeekforGeeks>
Príklad parametrizovaný konštruktor:
Python3
binárny strom inorder traversal
class> Addition:> >first>=> 0> >second>=> 0> >answer>=> 0> ># parameterized constructor> >def> __init__(>self>, f, s):> >self>.first>=> f> >self>.second>=> s> >def> display(>self>):> >print>(>'First number = '> +> str>(>self>.first))> >print>(>'Second number = '> +> str>(>self>.second))> >print>(>'Addition of two numbers = '> +> str>(>self>.answer))> >def> calculate(>self>):> >self>.answer>=> self>.first>+> self>.second> # creating object of the class> # this will invoke parameterized constructor> obj1>=> Addition(>1000>,>2000>)> # creating second object of same class> obj2>=> Addition(>10>,>20>)> # perform Addition on obj1> obj1.calculate()> # perform Addition on obj2> obj2.calculate()> # display result of obj1> obj1.display()> # display result of obj2> obj2.display()> |
reťazec a podreťazec
>
>Výkon
First number = 1000 Second number = 2000 Addition of two numbers = 3000 First number = 10 Second number = 20 Addition of two numbers = 30>
Príklad:
Python
class> MyClass:> >def> __init__(>self>, name>=>None>):> >if> name>is> None>:> >print>(>'Default constructor called'>)> >else>:> >self>.name>=> name> >print>(>'Parameterized constructor called with name'>,>self>.name)> > >def> method(>self>):> >if> hasattr>(>self>,>'name'>):> >print>(>'Method called with name'>,>self>.name)> >else>:> >print>(>'Method called without a name'>)> # Create an object of the class using the default constructor> obj1>=> MyClass()> # Call a method of the class> obj1.method()> # Create an object of the class using the parameterized constructor> obj2>=> MyClass(>'John'>)> # Call a method of the class> obj2.method()> |
čo je desktop ini
>
>Výkon
príklady programovania v pythone
Default constructor called Method called without a name ('Parameterized constructor called with name', 'John') ('Method called with name', 'John')> Vysvetlenie:
V tomto príklade definujeme triedu MyClass s predvoleným aj parametrizovaným konštruktorom. Predvolený konštruktor skontroluje, či bol parameter odovzdaný alebo nie, a podľa toho vytlačí správu do konzoly. Parametrizovaný konštruktor prevezme názov jedného parametra a nastaví atribút názvu objektu na hodnotu tohto parametra.
Tiež definujeme metódu method(), ktorá kontroluje, či má objekt atribút name alebo nie, a podľa toho vypíše správu do konzoly.
Pomocou oboch typov konštruktorov vytvoríme dva objekty triedy MyClass. Najprv vytvoríme objekt pomocou predvoleného konštruktora, ktorý vypíše správu Predvolený konštruktor volaný do konzoly. Na tento objekt potom zavoláme metódu method(), ktorá vypíše do konzoly správu Metóda volaná bez mena.
Ďalej vytvoríme objekt pomocou parametrizovaného konštruktora a zadáme mu meno John. Konštruktor sa volá automaticky a na konzole sa vytlačí správa Parametrizovaný konštruktor volal s menom John. Potom na tomto objekte zavoláme metódu method(), ktorá vypíše do konzoly správu Metóda volaná s menom John.
Celkovo tento príklad ukazuje, ako môžu byť oba typy konštruktorov implementované v jednej triede v Pythone.
Výhody použitia konštruktorov v Pythone:
- Inicializácia objektov: Konštruktory sa používajú na inicializáciu objektov triedy. Umožňujú vám nastaviť predvolené hodnoty pre atribúty alebo vlastnosti a tiež vám umožňujú inicializovať objekt pomocou vlastných údajov. Jednoduchá implementácia: Konštruktory sa v Pythone jednoducho implementujú a možno ich definovať pomocou metódy __init__().
- Lepšia čitateľnosť: Konštruktory zlepšujú čitateľnosť kódu tým, že je jasné, aké hodnoty sa inicializujú a ako sa inicializujú. Zapuzdrenie: Konštruktory možno použiť na vynútenie zapuzdrenia tým, že zaistia, aby boli atribúty objektu inicializované správne a kontrolovaným spôsobom.
Nevýhody použitia konštruktorov v Pythone:
- Preťaženie nie je podporované: Na rozdiel od iných objektovo orientovaných jazykov Python nepodporuje preťaženie metód. To znamená, že v jednej triede nemôžete mať viacero konštruktorov s rôznymi parametrami. Obmedzená funkčnosť: Konštruktory v Pythone majú v porovnaní s konštruktormi v iných programovacích jazykoch obmedzenú funkčnosť. Napríklad Python nemá konštruktory s modifikátormi prístupu ako verejný, súkromný alebo chránený. Konštruktory môžu byť zbytočné: V niektorých prípadoch nemusia byť konštruktory potrebné, pretože predvolené hodnoty atribútov môžu byť dostatočné. V týchto prípadoch môže použitie konštruktora pridať zbytočnú zložitosť kódu.
Celkovo môžu byť konštruktory v Pythone užitočné na inicializáciu objektov a vynútenie zapuzdrenia. Tie však nemusia byť vždy potrebné a v porovnaní s konštruktormi v iných programovacích jazykoch majú obmedzenú funkčnosť.