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()
它会列出科目。
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