Python - 内部类



Python 中的内部类

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

语法


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

内部类允许您对类进行分组。嵌套类的优点之一是很容易理解哪些类是相关的。内部类具有本地范围。它充当 outer 类的属性之一。

在下面的代码中,我们将 student 作为外部类,将 subject 作为内部类。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()

它将列出主题。

Inner Class 的类型

在 Python 中,内部类有两种类型 -

  • 多个内部类
  • 多级内部类

多个内部类

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

在下面的示例中,我们创建了一个名为 Organization 的外部类和两个内部类。


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

	 	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: Qikepu Com
In Department 1
In Department 2

多级内部类

它引用一个内部类,该类本身包含另一个内部类。它创建多个级别的嵌套类。

以下代码解释了 Python 中多级内部类的工作原理 -


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

	 	def showName(self):
	 	 	 print("Organization Name: Qikepu Com")

	 	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: Qikepu Com
In Department
Team 1 of the department