本文概述
你可能听说过Python中的嵌套函数。如果你知道这意味着什么, 那么了解内部/嵌套类就是什么。我们将在这里的内部或嵌套类中探索一些新事物。
栏目
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。每辆汽车都需要一个引擎。但是, 没有汽车就不会使用引擎。因此, 你使引擎成为了汽车的内部类。它有助于保存代码。
- 隐藏代码是嵌套类的另一种用法。你可以对外界隐藏嵌套类。
- 很容易理解这些类。这里的课程紧密相关。你不必在代码中搜索类。他们在一起。
内部或嵌套类不是Python中最常用的功能。但是, 实现代码可能是一个很好的功能。使用内部或嵌套类时, 代码易于组织。
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面向对象编程课程。
评论前必须登录!
注册