Python 繼承
Python 繼承
繼承允許我們定義一個類,該類繼承另一個類的所有方法和屬性。
父類 是被繼承的類,也稱為基類。
子類 是繼承自另一個類的類,也稱為派生類。
建立父類
任何類都可以是父類,所以語法與建立任何其他類相同
示例
建立一個名為 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 類相同的屬性和方法。
新增 __init__() 函式
到目前為止,我們已經建立了一個繼承了其父類屬性和方法的子類。
我們想在子類中新增 __init__()
函式(而不是 pass
關鍵字)。
注意: 每次使用類建立新物件時,__init__() 函式都會自動呼叫。
示例
將 __init__()
函式新增到 Student
類中
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()
函式,它將使子類繼承其父類的所有方法和屬性
透過使用 super()
函式,您不必使用父元素的名稱,它將自動繼承其父類的方法和屬性。
新增屬性
示例
將 graduationyear
屬性新增到 Student
類中
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)
自己動手試一試 »
新增方法
示例
將一個名為 welcome
的方法新增到 Student
類中
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)
自己動手試一試 »
如果您在子類中添加了一個與父類中的函式同名的方法,則父類方法的繼承將被覆蓋。