__init__ i Python
__init__ metode i Python bruges til at initialisere objekter i en klasse. Det kaldes også en konstruktør.
For fuldstændigt at forstå begrebet __init__ metode, bør du være bekendt med:
Forudsætninger – Python klasse og objekter , Selv
Hvad er __init__ i Python?
__init__ metode er som standard konstruktør i C++ og Java . Konstruktører bruges til at initialisere objektets tilstand.
Konstruktørernes opgave er at initialisere (tildele værdier) til datamedlemmerne i klassen, når et objekt i klassen oprettes.
Ligesom metoder indeholder en konstruktør også en samling af udsagn (dvs. instruktioner), der udføres på tidspunktet for objektoprettelse. Det køres, så snart et objekt i en klasse er instantieret.
Metoden er nyttig til at udføre enhver initialisering, du ønsker at gøre med dit objekt.
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()> |
Produktion:
Hello, my name is Nikhil
Forståelse af koden
I ovenstående eksempel er en person ved navn Nikhil oprettet. Mens du opretter en person, overføres Nikhil som et argument, dette argument vil blive videregivet til __init__ metoden for at initialisere objektet.
Nøgleordet self repræsenterer forekomsten af en klasse og binder attributterne med de givne argumenter. På samme måde kan mange objekter i klassen Person oprettes ved at sende forskellige navne som argumenter.
Nedenfor er eksemplet på __ init__ i Python med parametre
Eksempel på __init__ metode i Python
Lad os se på nogle eksempler på __init__-metoden i Python.
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()> |
Produktion:
Hello, my name is Nikhil Hello, my name is Abhinav Hello, my name is Anshul
__init__ Metode med arv
Arv er en klasses evne til at udlede eller arve egenskaberne fra en anden klasse. Lad os overveje nedenstående eksempel for at se, hvordan __init__ fungerer i arv.
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'> )> |
Produktion:
A init called B init called
Så den overordnede klassekonstruktør kaldes først. Men i Python er det ikke obligatorisk, at den overordnede klassekonstruktør altid kaldes først.
Den rækkefølge, som metoden __init__ kaldes for en forælder eller en underordnet klasse, kan ændres. Dette kan ganske enkelt gøres ved at kalde den overordnede klassekonstruktør efter kroppen af den underordnede klassekonstruktør.
Eksempel:
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'> )> |
Produktion:
B init called A init called
Læs : Arv i Python
Vi har dækket __init__ i Python, diskuteret, hvordan man bruger __init__, og også set nogle eksempler på at bruge __init__ metoden i Python.
Konstruktør er et afgørende koncept i OOP'er, og __init__-metoden minder meget om konstruktører.
Håber denne artikel hjalp dig med at lære __init__ metoden, og du vil være i stand til at bruge den i dine projekter.
Relateret artikel
- Er __init__() en privat metode i Python?
- Hvad er forskellen mellem __init__ og __call__?
- __ny__ i Python