Funkcji specjalnej __init__używa się do ustawiania właściwości obiektu w trakcie jego tworzenia. Python automatycznie wywołuje tą funkcję, gdy jest tworzony nowy obiekt.
Pierwszy przykład wykorzystania funkcji specjalnej __init__
class koty: def __init__(self,rok): self.rok_urodzenia = rok Kremówka = koty(2016) Helen = koty(2013) Nefretka = koty(2014) print(Kremówka.rok_urodzenia) print(Helen.rok_urodzenia) print(Nefretka.rok_urodzenia) # Najpierw, za pomocą funkcji specjalnej, definiowana jest funkcja init z dwoma parametrami. def __init__ (self,rok): self.rok_urodzenia = rok # Pierwszym parametrem musi być self, ponieważ funkcja jest definiowana w obrębie klasy. # Funkcja specjalna zaczyna się i kończy dwoma podkreśleniami, za def klauzulą musi być spacja. # Kolejna część kodu tworzy instancje, koty z podanymi w nawiasie latami ich urodzin. Kremówka = koty(2016) Helen = koty(2013) Nefretka = koty(2014) # Wynik kodu: # 2016 # 2013 # 2014
Drugi przykład
Ten kod jest bardzo podobny do poprzedniego.
class kot:
def __init__(self, imię):
self.imię = imię
helen = kot("Helen")
print(helen.imię)
Teraz funkcja init z trzema argumentami.
class kolor_kota(object):
def __init__(self, imię, kolor):
self.imię = imię
self.kolor = kolor
nk1 = kolor_kota('Kremówka', 'ruda')
nk2 = kolor_kota('Helen', 'biało-szary')
print(nk1.imię)
print(nk1.kolor)
print(nk2. imię)
print(nk2.kolor)
# wynik kodu
# Kremówka
# ruda
# Helen
# biało-szary
Trzeci przykład
Ten przykład to rozwinięcie dwóch ostatnich kodów.
class Dane_kotów(object):
def __init__(self, nazwa, kolor, rok, miejsce_urodzenia):
self.nazwa = nazwa
self.kolor = kolor
self.rok = rok
self.miejsce_urodzenia = miejsce_urodzenia
k1 = Dane_kotów('Helen', 'biało-czarny',2014,'Pruszków')
print(k1.rok)
Czwarty przykład użycia funkcji specjalnej __init__, dziedziczenie klas
class Psy(object): # <--- Zakładam klasę Psy def __init__(self, imię, kolor): # <--- Definiuję funkcję self.imię = imię self.kolor = kolor p1 = Psy('Daks', 'rudy') # <-- Wprowadzam instancję p1 do klasy Psy p2 = Psy('Foker', 'biały') # <-- Wprowadzam instancję p2 do klasy Psy # <-- Sprawdzam czy działa print(p1.imię) # ---> Daks print(p2.kolor) # ---> biały # <--- Wprowadzam podlkasę Właściciele class Właściciele(Psy): # <- nowa podklasa będzie dziedziczyć z klasy Psy def __init__(self, imię, kolor, właściciel): # <--- Definicja funkcji dla podklasy Właściciele Psy.__init__(self, imię, kolor) # <--- W nowej podklasie Właściciele trzeba # powtórzyć konstruktora klasy podstawowej Psy self.właściciel = właściciel # <--- tu dodawana jest nowa cecha: właściciel p1 = Właściciele('Daks', 'rudy', 'Wojtek') p2 = Właściciele('Foker','biały','Ewa') print('------------------sprawdzenie podklasy Właściciele---------') print(p1.imię) # ---> Daks print(p2.kolor) # ---> biały print(p1.właściciel) # ---> Wojtek
Piąty przykład użycia funkcji specjalnej __init__
class Traktory(object): # <--- Zakłada nową klasę Traktory def __init__(self, model, kolor, producent, udźwig): # <--- Definiuje funkcję self.kolor = kolor self.producent = producent self.udźwig = udźwig self.model = model def start(self): print("Jedzie") def stop(self): print("Staje") def przyspieszenie(self): print("przyspieszenie...") "Przyśpieszenie działa" def skrzynia_biegów(self, Typ_skrzyni): print("Praca_biegów") " Skrzynia biegów działa" # Wprowadzona nowa instancja w klasie Traktory. Traktor1 ma 4 argumenty.Te argumenty idą do __init__ aby zainicjować obiekt. Traktor1 = Traktory("Ursus C-152","Ursus", 'Czerwony', '487kNT' ) # Sprawdzenie print(Traktor1.stop()) #<-- funkja stop działa print(Traktor1.udźwig) #<-- Atrybut __init__ działa
Szósty przykład, zastosowanie funkcji kalkulacyjnych
Proszę obliczyć, jaki jest koszt działki w Konstancinie o szerokości (430 metrów), długości (120 metrów). Kosztuje jednego metra kwadratowego wynosi 1 850 złotych.
class Dzialka:
def __init__(self, dlugosc, szerokosc, koszt_metra=0):
self.dlugosc = dlugosc
self.szerokosc = szerokosc
self.koszt_metra = koszt_metra
def obwod(self):
return 2 * (self.dlugosc + self.szerokosc)
def powierzchnia(self):
return self.dlugosc * self.szerokosc
def cena(self):
area = self.powierzchnia()
return (area * self.koszt_metra)/1000
# Proszę obliczyć, jaki jest koszt działki w Konstancinie
# o szerokości (430 metrów), długości (120 metrów).
# Kosztuje jednego metra kwadratowego wynosi 1850 złotych.
Konstancin = Dzialka(430, 120, 185)
print("Obwód działki w konstancinie:
print("Powierzchnia działki w konstancinie:
print("Cena działki w konstancinie: tyś. zł
