版權所有,未經許可,禁止轉載
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("Kevin", "Wu")
x.printname()
創建子類
要創建子類,需將父類作為參數傳入:
示例
創建一個名為Student的類,它將繼承Person類的屬性和方法:
class Student(Person):
pass
注意: 當您不想給類添加任何屬性或方法時,使用pass關鍵字。
現在Student類具有與Person類相同的屬性和方法。
示例
使用Student類創建對象,然后執行printname方法:
x = Student("Kevin", "Tony")
x.printname()
添加__init__()函數
到目前為止,我們已經創建了一個子類,它繼承了父類的屬性和方法。
現在將__init__()函數添加到子類(不再使用pass關鍵字)。
注意: 每當創建新對象時,都會自動調用類的__init__()函數。
示例
將__init__()函數添加到Student類:
class Student(Person):
def __init__(self, fname, lname):
# 添加屬性
當您添加了__init__()函數后,子類將不再繼承父類的__init__()函數。
注意: 子函數的__init__()重寫父函數的__init__()。
要保留父類的__init__()函數的功能,可在子類的__init__()函數中調用父類的__init__()函數:
示例
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
現在,我們已經給子類添加了__init__()函數,并調用了父類的__init__()函數,下面我們將在__init__()函數中添加其他功能。
添加屬性
示例
在Student類中添加一個關于畢業年份的屬性:
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
self.graduationyear = 2019
2019年應該是一個變量,并在創建學生對象時傳遞給Student類。為此,在__init__()函數中添加另一個year參數:
示例
添加一個year參數,創建對象時傳入畢業年份:
class Student(Person):
def __init__(self, fname, lname, year):
Person.__init__(self, fname, lname)
self.graduationyear = year
x = Student("Kevin", "Tony", 2019)
加入方法
示例
在Student類中添加一個名為welcome的方法:
class Student(Person):
def __init__(self, fname, lname, year):
Person.__init__(self, fname, lname)
self.graduationyear = year
def welcome(self):
print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)
如果在子類中添加父類中的同名方法,則父類的方法將被重寫。