__init__ v Pythone

metóda __init__ v Pythone sa používa na inicializáciu objektov triedy. Nazýva sa aj konštruktor.

Aby ste úplne porozumeli konceptu metódy __init__, mali by ste byť oboznámení s:

Predpoklady – Trieda a objekty Pythonu , Seba

Čo je __init__ v Pythone?

metóda __init__ je ako predvolený konštruktor v C++ a Java . Konštruktory sa používajú na inicializáciu stavu objektu.

Úlohou konštruktorov je inicializovať (priradiť hodnoty) dátovým členom triedy, keď je vytvorený objekt triedy.

Podobne ako metódy, aj konštruktor obsahuje kolekciu príkazov (t.j. inštrukcií), ktoré sa vykonajú v čase vytvorenia objektu. Spustí sa hneď, ako sa vytvorí inštancia objektu triedy.

Metóda je užitočná na vykonanie akejkoľvek inicializácie, ktorú chcete vykonať s vaším objektom.

Python3




# A Sample class with init method> class> Person:> > # init method or constructor> > def> __init__(> self> , name):> > self> .name> => name> > # Sample Method> > def> say_hi(> self> ):> > print> (> 'Hello, my name is'> ,> self> .name)> p> => Person(> 'Nikhil'> )> p.say_hi()>

Výkon:

Hello, my name is Nikhil 

Pochopenie kódu

Vo vyššie uvedenom príklade je vytvorená osoba menom Nikhil. Pri vytváraní osoby je Nikhil odovzdaný ako argument, tento argument bude odovzdaný metóde __init__ na inicializáciu objektu.

Kľúčové slovo self predstavuje inštanciu triedy a spája atribúty s danými argumentmi. Podobne mnohé objekty triedy Osoba môžu byť vytvorené odovzdaním rôznych mien ako argumentov.

Nižšie je uvedený príklad __ init__ v Pythone s parametrami

Príklad metódy __init__ v Pythone

Pozrime sa na niekoľko príkladov metódy __init__ v Pythone.

Python3




# A Sample class with init method> class> Person:> > # init method or constructor> > def> __init__(> self> , name):> > self> .name> => name> > # Sample Method> > def> say_hi(> self> ):> > print> (> 'Hello, my name is'> ,> self> .name)> # Creating different objects> p1> => Person(> 'Nikhil'> )> p2> => Person(> 'Abhinav'> )> p3> => Person(> 'Anshul'> )> p1.say_hi()> p2.say_hi()> p3.say_hi()>

Výkon:

Hello, my name is Nikhil Hello, my name is Abhinav Hello, my name is Anshul 

__init__ metóda s dedičnosťou

Dedičnosť je schopnosť jednej triedy odvodiť alebo zdediť vlastnosti z inej triedy. Pozrime sa na nižšie uvedený príklad, aby sme videli, ako __init__ funguje pri dedení.

Python3




# Python program to> # demonstrate init with> # inheritance> class> A(> object> ):> > def> __init__(> self> , something):> > print> (> 'A init called'> )> > self> .something> => something> class> B(A):> > def> __init__(> self> , something):> > # Calling init of parent class> > A.__init__(> self> , something)> > print> (> 'B init called'> )> > self> .something> => something> obj> => B(> 'Something'> )>

Výkon:

A init called B init called 

Najprv sa teda volá konštruktor rodičovskej triedy. V Pythone však nie je povinné, aby bol konštruktor rodičovskej triedy vždy volaný ako prvý.

Poradie, v ktorom sa volá metóda __init__ pre nadradenú alebo podradenú triedu, možno upraviť. To sa dá jednoducho urobiť volaním konštruktora nadradenej triedy za telom konštruktora podradenej triedy.

Príklad:

Python3




# Python program to> # demonstrate init with> # inheritance> class> A(> object> ):> > def> __init__(> self> , something):> > print> (> 'A init called'> )> > self> .something> => something> class> B(A):> > def> __init__(> self> , something):> > print> (> 'B init called'> )> > self> .something> => something> > # Calling init of parent class> > A.__init__(> self> , something)> obj> => B(> 'Something'> )>

Výkon:

B init called A init called 

Čítať : Dedičnosť v Pythone

Pokryli sme __init__ v Pythone, diskutovali o tom, ako používať __init__, a tiež sme videli niekoľko príkladov použitia metódy __init__ v Pythone.

Konštruktor je kľúčovým konceptom v OOP a metóda __init__ je veľmi podobná konštruktorom.

Dúfame, že vám tento článok pomohol naučiť sa metódu __init__ a budete ju môcť použiť vo svojich projektoch.

Súvisiaci článok

  • Je __init__() súkromná metóda v Pythone?
  • Aký je rozdiel medzi __init__ a __call__?
  • __new__ v Pythone