23_PY. Przykłady zastosowania funkcji specjalnej __init__

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ł