Python 简明教程

Python - Inner Classes

Inner Class in Python

在 Python 中,定义在另一个类内部的类被称为 inner class 。有时,内部类也称为嵌套类。如果内部类已实例化,则外层类也可以使用内部类的对象。内部类的对象成为外层类的属性之一。内部类自动继承外层类的属性,而无需正式建立继承关系。

Syntax

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

使用内部类可以对类进行分组。嵌套类的优点之一就是可以轻而易举地搞清楚哪些类是相关的。内部类的作用域为局部作用域。它作为外部类的一个属性。

Example

在以下代码中,我们有 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()

执行此代码时,它将生成以下 output -

Name: Ashish
Subjects: Phy Che

完全有可能会独立地声明一个外部类的对象,并使用其自己的 display() 方法。

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

它会列出科目。

Types of Inner Class

在 Python 中,内部类分为两种类型 −

  1. Multiple Inner Class

  2. Multilevel Inner Class

Multiple Inner Class

在多个内部类中,一个外层类包含多个内部类。每个内部类都独立工作,但可以与外层类的成员进行交互。

Example

在下面的示例中,我们创建了一个名为 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()

执行后,此代码将会产生以下 output

Organization Name: Tutorials Point
In Department 1
In Department 2

Multilevel Inner Class

它指的是一个内部类,该内部类本身又包含另一个内部类。它创建了嵌套类的多个级别。

Example

以下代码说明了多层内部类在 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()

当您运行上述代码时,它将生成以下 output

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