Python perintä
- Edellinen Sivu Python Luokka/Erittely
- Seuraava Sivu Python iterointi
Python perintä
Perintä mahdollistaa luokan määrittämisen, joka sisältää toisen luokan kaikki metodit ja ominaisuudet.
IsäluokkaOn perityn luokan, ja sitä kutsutaan myös perusluokaksi.
AlaluokkaOn luokka, joka perii toisesta luokasta, ja sitä kutsutaan myös poikoluokaksi.
Luo isäluokka
Mikä tahansa luokka voi olla isäluokka, joten syntaksi on sama kuin minkä tahansa muun luokan luomisessa:
Esimerkki
Luo Person-niminen luokka, joka sisältää firstname- ja lastname-ominaisuudet sekä printname-metodin:
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) # Luo objekti Person ja suorita printname-metodi: x = Person("Bill", "Gates") x.printname()
Luo lapsiluokka
Jos haluat luoda luokan, joka perii ominaisuudet toisesta luokasta, lähetä isäluokka parametrina luokan luonnin yhteydessä:
Esimerkki
Luo luokka nimeltä Student, joka perii ominaisuudet ja menetelmät Person-luokalta:
class Student(Person): pass
Huomautus:Jos et halua lisätä luokalle muita ominaisuuksia tai menetelmiä, käytä pass
avainsana。
Nyt Student-luokalla on samat ominaisuudet ja menetelmät kuin Person-luokalla.
Esimerkki
Luo Student-luokan objekti ja suorita printname-metodi:
x = Student("Elon", "Musk") x.printname()
Lisää __init__() -funktio
Tähän asti olemme luoneet lapsiluokan, joka perii isän ominaisuudet ja menetelmät.
haluamme lisätä __init__()
lisää funktio lapsiluokkaan (ei pass
avainsana)。
Huomautus:Jokaisen kerran, kun luokkaa käytetään luodakseen uusi objekti, kutsutaan automaattisesti __init__() -funktiota.
Esimerkki
Lisää __init__() -funktio Student-luokalle:
class Student(Person): def __init__(self, fname, lname): # Lisää ominaisuudet jne.
Kun lisäät __init__() -funktiota, lapsiluokka ei enää peri isän __init__() -funktiota.
Huomautus:Lapsen __init__() -funktio korvaa isän __init__() -funktioperinnön.
Jos haluat säilyttää isän __init__() -funktio perinnän, lisää kutsu isän __init__() -funktiolle:
Esimerkki
class Student(Person): def __init__(self, fname, lname): Person.__init__(self, fname, lname)
Nyt olemme onnistuneesti lisänneet __init__() -funktio ja säilyttäneet isän perinnän, ja olemme valmiita lisäämään toiminnallisuutta __init__() -funktiolle.
käyttämällä super() -funktiota
Pythonilla on myös super()
funktio, se saa lapsiluokan perimään kaikki isän menetelmät ja ominaisuudet:
Esimerkki
class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname)
käyttämällä super()
funktio, ettei tarvitse käyttää isän elementin nimeä, se peri automaattisesti menetelmät ja ominaisuudet isältään.
lisää ominaisuus
Esimerkki
nimeltä graduationyear
ominaisuuksia lisätään Student
luokka:
class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname) self.graduationyear = 2019
Tässä esimerkissä vuosi 2019 tulisi olla muuttuja, ja sen tulisi välittää Student-luokalle luonettaessa student-objektia. Tätä varten lisää toinen parametri __init__() -funktioon:
Esimerkki
lisää vuosi
parametrit, ja välitä oikea vuosi luonettaessa objektia. Tämä tarkoittaa, että vuoden 2019 tulisi olla muuttuja, ja sen tulisi välittää Student-luokalle luonettaessa student-objektia. Tätä varten lisää toinen parametri __init__() -funktioon:
class Student(Person): def __init__(self, fname, lname, vuosi) super().__init__(fname, lname) self.graduationyear = year x = Student("Elon", "Musk", 2019)
lisää Metodi
Esimerkki
nimeltä welcome
lisätään Student-luokkaan seuraava metodi:
class Student(Person): def __init__(self, fname, lname, year): super().__init__(fname, lname) self.graduationyear = year def welcome(self): print("Tervetuloa", self.firstname, self.lastname, "luokkaan", self.graduationyear)
Vinkki:Jos lisäät aliluokkaan funktion, jonka nimi on sama kuin isäluokassa olevalla funktionimellä, korvataan isän metodin perintä.
- Edellinen Sivu Python Luokka/Erittely
- Seuraava Sivu Python iterointi