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