Python super() 函式



Python 的 super() 函式 是一個 內建函式,允許我們在子類中呼叫超類的方 法或屬性。無需提及父類的名稱即可訪問其中存在的方法。

使用此函式的一個好處是,即使繼承層次結構發生變化,super() 也將始終引用正確的超類,而無需對子類進行任何修改。

語法

以下是 Python super() 函式的語法:

super()

引數

Python super() 函式不接受任何引數。

返回值

此函式返回一個表示父類的物件。

super() 函式示例

練習以下示例以瞭解如何在 Python 中使用 super() 函式

示例:super() 函式的使用

以下示例實際演示了 Python super() 函式的使用。在這裡,我們定義單層繼承並嘗試呼叫父類的 __init__ 方法。

class Company:
   def __init__(self, orgName):
      self.orgName = orgName

class Employee(Company):
   def __init__(self, orgName, empName):
      super().__init__(orgName)
      self.empName = empName

employee = Employee("TutorialsPoint", "Shrey")
print("Accessing parent class properties:")
print(employee.orgName)

執行上述程式時,將產生以下結果:

Accessing parent class properties:
TutorialsPoint

示例:使用 super() 函式重寫父類方法

super() 函式可用於 重寫父類的任何方法,如下面的程式碼所示。在這裡,我們重寫了名為“newMsg”的方法。

class Message:
   def newMsg(self):
      print("Welcome to Tutorialspoint!!")

class SendMsg(Message):
   def newMsg(self):
      print("You are on Tutorialspoint!!")
      super().newMsg()

sendMsg = SendMsg()
print("Overriding parent class method:")
sendMsg.newMsg()

以下是上述程式碼的輸出:

Overriding parent class method:
You are on Tutorialspoint!!
Welcome to Tutorialspoint!!

示例:在多重繼承中使用 super() 函式

以下程式碼演示瞭如何在多重 繼承 中使用 super() 訪問父類。

class Organisation:
   def __init__(self, orgName):
      self.orgName = orgName

class Hr(Organisation):
   def __init__(self, orgName, hrName):
      super().__init__(orgName)
      self.hrName = hrName

class Employee(Hr):
   def __init__(self, orgName, hrName, empName):
      super().__init__(orgName, hrName)
      self.empName = empName

emp = Employee("TutorialsPoint", "K. Raja", "Shrey")
print(f"Organisation Name: {emp.orgName}")
print(f"HR Name: {emp.hrName}")
print(f"Employee Name: {emp.empName}")

上述程式碼的輸出如下:

Organisation Name: TutorialsPoint
HR Name: K. Raja
Employee Name: Shrey
python_built_in_functions.htm
廣告