Python - 內部類



Python 中的內部類

在 Python 中,定義在另一個類內部的類被稱為內部類。有時內部類也被稱為巢狀類。如果內部類被例項化,則父類也可以使用內部類的物件。內部類的物件成為外部類的一個屬性。內部類自動繼承外部類的屬性,而無需正式建立繼承關係。

語法

class outer:
   def __init__(self):
      pass
   class inner:
      def __init__(self):
         pass

內部類允許您對類進行分組。巢狀類的優點之一是更容易理解哪些類是相關的。內部類具有區域性作用域。它充當外部類的一個屬性。

示例

在下面的程式碼中,我們有 student 作為外部類,subjects 作為內部類。student 的 __init__() 建構函式初始化 name 屬性和 subjects 類的例項。另一方面,內部 subjects 類的建構函式初始化兩個例項變數 sub1、sub2。

外部類的 show() 方法使用已例項化的物件呼叫內部類的方法。

class student:
   def __init__(self):
      self.name = "Ashish"
      self.subs = self.subjects()
      return
   def show(self):
      print ("Name:", self.name)
      self.subs.display()
   class subjects:
      def __init__(self):
         self.sub1 = "Phy"
         self.sub2 = "Che"
         return
      def display(self):
         print ("Subjects:",self.sub1, self.sub2)
         
s1 = student()
s1.show()

執行此程式碼時,將產生以下輸出 -

Name: Ashish
Subjects: Phy Che

完全可以獨立宣告外部類的物件,並使其呼叫自己的 display() 方法。

sub = student().subjects().display()

它將列出科目。

內部類的型別

在 Python 中,內部類有兩種型別 -

  • 多重內部類
  • 多級內部類

多重內部類

多重內部類中,單個外部類包含多個內部類。每個內部類都獨立工作,但可以與外部類的成員進行互動。

示例

在下面的示例中,我們建立了一個名為Organization 的外部類和兩個內部類。

class Organization:
   def __init__(self):
      self.inner1 = self.Department1()
      self.inner2 = self.Department2()
        
   def showName(self):
      print("Organization Name: Tutorials Point")

   class Department1:
      def displayDepartment1(self):
         print("In Department 1")
            
   class Department2:
      def displayDepartment2(self):
         print("In Department 2")

# instance of OuterClass
outer = Organization() 
# Calling show method
outer.showName()  
# InnerClass instance 1
inner1 = outer.inner1 
# Calling display method
inner1.displayDepartment1() 
# InnerClass instance 2
inner2 = outer.inner2 
# Calling display method
inner2.displayDepartment2() 

執行後,此程式碼將產生以下輸出 -

Organization Name: Tutorials Point
In Department 1
In Department 2

多級內部類

它指的是一個內部類,該內部類本身包含另一個內部類。它建立了多級巢狀類。

示例

以下程式碼解釋了 Python 中多級內部類的工作原理 -

class Organization:
   def __init__(self):
      self.inner = self.Department()

   def showName(self):
      print("Organization Name: Tutorials Point")

   class Department:
      def __init__(self):
         self.innerTeam = self.Team1()

      def displayDep(self):
         print("In Department")

      class Team1:
         def displayTeam(self):
            print("Team 1 of the department")

# instance of outer class                
outer = Organization()  
# call the method of outer class
outer.showName()  

# Inner Class instance
inner = outer.inner  
inner.displayDep()  

# Access Team1 instance
innerTeam = inner.innerTeam  
# Calling display method
innerTeam.displayTeam() 

執行以上程式碼,將產生以下輸出

Organization Name: Tutorials Point
In Department
Team 1 of the department
廣告