Python 繼承
- 上一頁 Python 類/對象
- 下一頁 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("Bill", "Gates") x.printname()
創建子類
要創建從其他類繼承功能的類,請在創建子類時將父類作為參數發送:
實例
創建一個名為 Student 的類,它將從 Person 類繼承屬性和方法:
class Student(Person): pass
注釋:如果您不想向該類添加任何其他屬性或方法,請使用 pass
關鍵字。
現在,Student 類擁有與 Person 類相同的屬性和方法。
實例
使用 Student 類創建一個對象,然后執行 printname 方法:
x = Student("Elon", "Musk") 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()
函數,您不必使用父元素的名稱,它將自動從其父元素繼承方法和屬性。
添加屬性
實例
把名為 graduationyear
的屬性添加到 Student
類:
class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname) self.graduationyear = 2019
在這例子中,2019 年應該是一個變量,并在創建 student 對象時傳遞到 Student 類。為此,請在 __init__() 函數中添加另一個參數:
實例
添加 year
參數,并在創建對象時傳遞正確的年份:
class Student(Person): def __init__(self, fname, lname, year): super().__init__(fname, lname) self.graduationyear = year x = Student("Elon", "Musk", 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)
提示:如果您在子類中添加一個與父類中的函數同名的方法,則將覆蓋父方法的繼承。
- 上一頁 Python 類/對象
- 下一頁 Python 迭代