Python内部类

本文概述

  • 栏目
  • 1.内部或嵌套类
  • 2.为什么选择内部课程?
  • 3.编码内部类
  • 3.2。多层次内部课程
  • 总结
你可能听说过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.为什么选择内部课程?
  1. 两个或更多类的分组。假设你有两个类Car和Engine。每辆汽车都需要一个引擎。但是, 没有汽车就不会使用引擎。因此, 你使引擎成为了汽车的内部类。它有助于保存代码。
  2. 隐藏代码是嵌套类的另一种用法。你可以对外界隐藏嵌套类。
  3. 很容易理解这些类。这里的课程紧密相关。你不必在代码中搜索类。他们在一起。
【Python内部类】内部或嵌套类不是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面向对象编程课程。

    推荐阅读