程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

16-python學習筆記之類的繼承

編輯:Python

文章目錄

  • 前言
    • Python 繼承
    • 創建父類
  • 一、如何繼承父類
    • 創建子類
    • 添加 `__init__()` 函數
    • 添加屬性
    • 添加方法
  • 二、
  • 總結


前言


以下都是自己的一些學習筆記,可能有寫的不對的地方,還望各位大佬體諒和加以指正。


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)

Tips:如果我們在子類中添加一個與父類中的函數同名的方法,則將覆蓋父方法的繼承。

二、


總結

當我們想要繼承類的時候,有兩種方法:
一是:

class Class_one():
def __init__(self, name, age):
self.name = name
self.age = age
class MyClass(Class_one):
def __init__(self, name, age):
Class_one.__init__(self, name, age)
def print():
print(self.name + self.age)
myclass = MyClass('tom', 20)
myclass.print()

二是使用 super() 函數:

class Class_one():
def __init__(self, name, age):
self.name = name
self.age = age
class MyClass(Class_one):
def __init__(self, name, age):
super().__init__(self, name, age)
def print():
print(self.name + self.age)
myclass = MyClass('tom', 20)
myclass.print()

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved