Python perintä

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()

Suorita Esimerkki

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()

Suorita Esimerkki

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)

Suorita Esimerkki

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)

Suorita Esimerkki

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

Suorita Esimerkki

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)

Suorita Esimerkki

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)

Suorita Esimerkki

Vinkki:Jos lisäät aliluokkaan funktion, jonka nimi on sama kuin isäluokassa olevalla funktionimellä, korvataan isän metodin perintä.