本文概述
- 栏目
- 1.内部或嵌套类
- 2.为什么选择内部课程?
- 3.编码内部类
- 3.2。多层次内部课程
- 总结
栏目1.内部或嵌套类
2.为什么选择内部类
3.编码内部类
3.1。多个内部课程
3.2。多层次内部课程
1.内部或嵌套类内部或嵌套类是在另一个类中定义的。请参阅内部或嵌套类的结构。
## outer class
class Outer:## inner class
class Inner:
pass## multilevel inner class
class InnerInner:
pass## another inner class
class _Inner:
pass## ...pass
2.为什么选择内部课程?
- 两个或更多类的分组。假设你有两个类Car和Engine。每辆汽车都需要一个引擎。但是, 没有汽车就不会使用引擎。因此, 你使引擎成为了汽车的内部类。它有助于保存代码。
- 隐藏代码是嵌套类的另一种用法。你可以对外界隐藏嵌套类。
- 很容易理解这些类。这里的课程紧密相关。你不必在代码中搜索类。他们在一起。
3.编码内部类实现内部或嵌套类并不困难。你可以在此处查看代码的结构。
你可以使用self关键字访问外部类中的内部类。因此, 你可以根据需要快速创建内部类的实例并在外部类中执行操作。但是, 你不能在内部类中访问外部类。让我们看下面的例子。
class Outer:
"""Outer Class"""def __init__(self):
## instantiating the 'Inner' class
self.inner = self.Inner()def reveal(self):
## calling the 'Inner' class function display
self.inner.inner_display("Calling Inner class function from Outer class")class Inner:
"""Inner Class"""def inner_display(self, msg):
print(msg)
现在, 你将创建Outer类的实例, 并调用它的Reveal()方法来执行Inner类的方法inner_display()。
## creating an instance of the 'Outer' class
outer = Outer()
## calling the 'reveal()' method
outer.reveal()
Calling Inner class function from Outer class
让我们看看另一种访问内部类的方法。这种方式效率较低。
Outer().Inner().inner_display("Calling the Inner class method directly")
Calling the Inner class method directly
如果要在外部类之外创建内部类的实例怎么办?你能做到吗?是的, 让我们看看如何在外部类之外创建内部类的实例。
outer = Outer()## instantiating the inner class
inner = outer.Inner() ## inner = Outer().Inner() or inner = outer.inner
inner.inner_display("Just Print It!")
Just Print It!
3.1。多个内部课程
这是一个包含多个内部类的类。一个类中可以有多个内部类。正如我们前面定义的, 很容易实现多个内部类。
class Outer:
"""Outer Class"""def __init__(self):
## Instantiating the 'Inner' class
self.inner = self.Inner()
## Instantiating the '_Inner' class
self._inner = self._Inner()def show_classes(self):
print("This is Outer class")
print(inner)
print(_inner)class Inner:
"""First Inner Class"""def inner_display(self, msg):
print("This is Inner class")
print(msg)class _Inner:
"""Second Inner Class"""def inner_display(self, msg):
print("This is _Inner class")
print(msg)## ...
访问这些类与我们之前所做的相同。请参阅示例以更好地理解。
## instantiating the classes## 'Outer' class
outer = Outer()
## 'Inner' class
inner = outer.Inner() ## inner = outer.inner or inner = Outer().Inner()
## '_Inner' class
_inner = outer._Inner() ## _inner = outer._outer or _inner = Outer()._Inner()## calling the methods
outer.show_classes()print()## 'Inner' class
inner.inner_display("Just Print It!")print()## '_Inner' class
_inner.inner_display("Just Show It!")
This is Outer class
<
__main__.Outer.Inner object at 0x0000021B37962048>
<
__main__.Outer._Inner object at 0x0000021B37962160>
This is Inner class
Just Print It!This is _Inner class
Just Show It!
3.2。多层次内部课程在多层内部类中, 内部类包含另一个类, 该内部类是上一个类的内部类。你可以在此处查看此层次结构的结构:
class Outer:
"""Outer Class"""def __init__(self):
## instantiating the 'Inner' class
self.inner = self.Inner()
## instantiating the multilevel 'InnerInner' class
self.innerinner = self.inner.InnerInner()def show_classes(self):
print("This is Outer class")
print(inner)## inner class
class Inner:
"""First Inner Class"""def __init__(self):
## instantiating the 'InnerInner' class
self.innerinner = self.InnerInner()def show_classes(self):
print("This is Inner class")
print(self.innerinner)## multilevel inner class
class InnerInner:def inner_display(self, msg):
print("This is multilevel InnerInner class")
print(msg)def inner_display(self, msg):
print("This is Inner class")
print(msg)## ...
让我们看看如何实例化多层内部类。
outer = Outer()inner = outer.Inner()## this is 'InnerInner' class instance
innerinner = inner.InnerInner() ## innerinner = Outer().Inner().InnerInner()## let's call its method inner_display
innerinner.inner_display("Just Print It!")
This is multilevel InnerInner class
Just Print It!
总结希望你现在了解内部类的概念。现在是时候尝试嵌套类了。快乐编码:)
如果你想了解有关类的更多信息, 请参加srcmini的Python面向对象编程课程。
推荐阅读
- Python函数教程
- Python正则表达式教程
- 如何安装SQL Server(详细步骤图解)
- R中的数据类型
- Python中的虚拟环境
- R中的条件和控制流
- R中的实用程序
- Python Print()函数
- Python Range()函数