在 Python 中,定义在一个类内部的类被称为内部类(inner class)。有时内部类也被称作嵌套类。如果内部类被实例化,那么内部类的对象也可以被父类使用。内部类的对象成为了外部类的一个属性。内部类自动继承外部类的属性,而无需正式地建立继承关系。
语法
class 外部类:
def __init__(self):
pass
class 内部类:
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("姓名:", self.name)
self.subs.display()
class subjects:
def __init__(self):
self.sub1 = "物理"
self.sub2 = "化学"
return
def display(self):
print("科目:", self.sub1, self.sub2)
s1 = student()
s1.show()
当执行此代码时,它将产生以下输出:
姓名: Ashish
科目: 物理 化学
也可以独立声明外部类的对象,并让它调用自己的 display()
方法。
sub = student().subjects().display()
这将列出科目。
内部类的类型
在 Python 中,内部类有两种类型:
多个内部类
在多个内部类中,一个外部类包含不止一个内部类。每个内部类独立工作,但它可以与外部类的成员交互。
示例
在下面的示例中,我们创建了一个名为 Organization
的外部类和两个内部类。
class Organization:
def __init__(self):
self.inner1 = self.Department1()
self.inner2 = self.Department2()
def showName(self):
print("组织名称: Tutorials Point")
class Department1:
def displayDepartment1(self):
print("在部门1")
class Department2:
def displayDepartment2(self):
print("在部门2")
outer = Organization()
outer.showName()
inner1 = outer.inner1
inner1.displayDepartment1()
inner2 = outer.inner2
inner2.displayDepartment2()
当执行此代码时,它将产生以下输出:
组织名称: Tutorials Point
在部门1
在部门2
多级内部类
多级内部类指的是一个内部类自身又包含了另一个内部类。这创建了多层嵌套的类。
示例
下面的代码解释了 Python 中多级内部类的工作原理。
class Organization:
def __init__(self):
self.inner = self.Department()
def showName(self):
print("组织名称: Tutorials Point")
class Department:
def __init__(self):
self.innerTeam = self.Team1()
def displayDep(self):
print("在部门")
class Team1:
def displayTeam(self):
print("部门的团队1")
outer = Organization()
outer.showName()
inner = outer.inner
inner.displayDep()
innerTeam = inner.innerTeam
innerTeam.displayTeam()
当运行上述代码时,它将产生以下输出:
组织名称: Tutorials Point
在部门
部门的团队1