Python 繼承和子類範例:從 Person 到 Student 的演示

2023-10-27 06:01:27

繼承允許我們定義一個類,該類繼承另一個類的所有方法和屬性。父類別是被繼承的類,也叫做基礎類別。子類是從另一個類繼承的類,也叫做派生類。

建立一個父類別

任何類都可以成為父類別,因此語法與建立任何其他類相同:

範例,建立一個名為 Person 的類,具有 firstname 和 lastname 屬性以及一個 printname 方法:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

使用 Person 類建立一個物件,然後執行 printname 方法:

x = Person("John", "Doe")
x.printname()

建立一個子類

要建立一個從另一個類繼承功能的類,建立子類時將父類別作為引數傳遞:

範例,建立一個名為 Student 的類,它將繼承 Person 類的屬性和方法:

class Student(Person):
  pass

注意: 當您不希望向類新增任何其他屬性或方法時,請使用 pass 關鍵字。

現在,Student 類具有與 Person 類相同的屬性和方法。

範例,使用 Student 類建立一個物件,然後執行 printname 方法:

x = Student("Mike", "Olsen")
x.printname()

新增 init() 函數

到目前為止,我們已經建立了一個從父類別繼承屬性和方法的子類。我們希望在子類中新增 init() 函數(而不是使用 pass 關鍵字)。

注意: 每次使用類建立新物件時,都會自動呼叫 init() 函數。

範例,向 Student 類新增 init() 函數:

class Student(Person):
  def __init__(self, fname, lname):
    # 新增屬性等

當您新增 init() 函數時,子類將不再繼承父類別的 init() 函數。

注意: 子類的 init() 函數會覆蓋父類別的 init() 函數的繼承。

要保留父類別的 init() 函數的繼承,將呼叫父類別的 init() 函數:

範例:

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

現在,我們已成功新增了 init() 函數,並保留了父類別的繼承,並準備在 init() 函數中新增功能。

使用 super() 函數

Python 還具有 super() 函數,可以使子類繼承其父類別的所有方法和屬性:

範例:

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)

通過使用 super() 函數,您無需使用父元素的名稱,它將自動繼承其父元素的方法和屬性。

新增屬性

範例,向 Student 類新增一個名為 graduationyear 的屬性:

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
    self.graduationyear = 2019

在下面的範例中,2019 年應該是一個變數,並且在建立學生物件時傳遞給 Student 類。要實現這一點,請在 init() 函數中新增另一個引數:

範例,新增一個 year 引數,並在建立物件時傳遞正確的年份:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

x = Student("Mike", "Olsen", 2019)

新增方法

範例,向 Student 類新增一個名為 welcome 的方法:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

  def welcome(self):
    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

最後

為了方便其他裝置和平臺的小夥伴觀看往期文章:公眾號搜尋Let us Coding,或者掃描下方二維條碼,關注公眾號,即可獲取最新文章。

看完如果覺得有幫助,歡迎點贊、收藏關注