繼承允許我們定義一個類,該類繼承另一個類的所有方法和屬性。父類是被繼承的類,也叫做基類。子類是從另一個類繼承的類,也叫做派生類。
建立一個父類
任何類都可以成為父類,因此語法與建立任何其他類相同:
示例,建立一個名為 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
,或者掃描下方二維碼,關注公眾號,即可獲取最新文章。
看完如果覺得有幫助,歡迎點贊、收藏和關注