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