📜  Python中的内部类

📅  最后修改于: 2022-05-13 01:54:35.172000             🧑  作者: Mango

Python中的内部类

Python是一种面向对象的编程语言, Python中的一切都与对象、方法和属性有关。类是用户定义的蓝图或原型,我们可以使用它来创建类的对象。类是使用 class 关键字定义的。

类的例子——

# create a Geeksforgeeks class
class Geeksforgeeks :
   gfg = 10

首先,我们要了解 __init__() 内置方法来理解类的含义。每当启动类时,总是会执行一个名为 __init__() 的方法。 __init__() 方法用于将值分配给对象属性或执行创建对象时需要完成的其他方法。

具有 __init__() 方法的类示例 –

# create a Geeksforgeeks class
class Geeksforgeeks:
  
 # constructor method
 def __init__(self):
  
  # object attributes
  self.course = "Campus preparation"
  self.duration = "2 months"
   
 # define a show method
 # for printing the content
 def show(self):
  print("Course:", self.course)
  print("Duration:", self.duration)
  
# create Geeksforgeeks 
# class object
outer = Geeksforgeeks()
  
# method calling
outer.show()

输出:

Course : Campus Preparation
Duration : As per your schedule 

Python中的内部类

在另一个类中定义的类称为内部类或嵌套类。如果使用子类创建对象意味着内部类,则该对象也可以被父类或根类使用。父类可以有一个或多个内部类,但通常避免使用内部类。

通过使用内部类,我们可以使我们的代码更加面向对象。类的单个对象可以包含多个子对象。我们可以使用多个子对象来为我们的程序提供良好的结构。

例子 -

首先我们创建一个类,然后是该类的构造函数。

创建一个类后,我们将在该类中创建另一个类,另一个类中的类称为内部类。

# create a Color class
class Color:
    
  # constructor method
  def __init__(self):
    # object attributes
    self.name = 'Green'
    self.lg = self.Lightgreen()
    
  def show(self):
    print("Name:", self.name)
    
  # create Lightgreen class
  class Lightgreen:
     def __init__(self):
        self.name = 'Light Green'
        self.code = '024avc'
    
     def display(self):
        print("Name:", self.name)
        print("Code:", self.code)
  
# create Color class object
outer = Color()
  
# method calling
outer.show()
  
# create a Lightgreen 
# inner class object
g = outer.lg
  
# inner class method calling
g.display()

输出:

Green
Name:Green

Light Green
023gfd

Name: Light Green
Code: 023gfd

为什么是内部类?

用于两个或更多类的分组。假设我们有两个类遥控器和电池。每个遥控器都需要电池,但没有遥控器的电池将无法使用。因此,我们将 Battery 设为 Remote 的内部类。它可以帮助我们节省代码。

借助内部类或嵌套类,我们可以对外界隐藏内部类。因此,隐藏代码是内部类的另一个好特性。

通过使用内部类,我们可以很容易地理解这些类,因为这些类是密切相关的。我们不需要在整个代码中搜索类,它们几乎都在一起。

尽管内部类或嵌套类在Python中没有广泛使用,但它是实现代码的更好功能,因为当我们使用内部类或嵌套类时,它可以直接组织。

句法:

# create NameOfOuterClass class
class NameOfOuterClass:

  # Constructor method of outer class
  def __init__(self):  

    self.NameOfVariable = Value

    # create Inner class object
    self.NameOfInnerClassObject = self.NameOfInnerClass() 
 
  # create a NameOfInnerClass class
  class NameOfInnerClass:  
     # Constructor method of inner class
    def __init__(self): 
      self.NameOfVariable = Value

# create object of outer class
outer = NameOfOuterClass() 

内部类的类型——

  • 多个内部类
  • 多级内部类

多个内部类

包含一个或多个内部类的类称为多内部类。我们可以在一个类中有多个内部类,很容易实现多个内部类。

多个内部类的示例 –

# create outer class
class Doctors:  
  def __init__(self):
     self.name = 'Doctor'
     self.den = self.Dentist()
     self.car = self.Cardiologist()
   
  def show(self):
    print('In outer class')
    print('Name:', self.name)
  
   # create a 1st Inner class
   class Dentist:   
      def __init__(self):
         self.name = 'Dr. Savita'
         self.degree = 'BDS'
      def display(self):
         print("Name:", self.name)
         print("Degree:", self.degree)
  
   # create a 2nd Inner class
   class Cardiologist:
      def __init__(self):
         self.name = 'Dr. Amit'
         self.degree = 'DM'
     def display(self):
         print("Name:", self.name)
         print("Degree:", self.degree)
  
# create a object
# of outer class
outer = Doctors()
outer.show()
  
# create a object
# of 1st inner class
d1 = outer.den
  
# create a object
# of 2nd inner class
d2 = outer.car
print()
d1.display()
print()
d2.display()

输出:

In outer class
Name: Doctor

In inner class 1
Name: Dr. Savita
Degree: BDS

In inner class 2
Name: Dr. Amit
Degree: DM 

多级内部类

该类包含内部类,而该内部类又包含另一个内部类,这种层次结构称为多级内部类。

多级内部类的示例 –

# create a outer class
class Geeksforgeeks:  
    
  def __init__(gfg):
     # create a inner class object
     self.inner = self.Inner()
  
  def show(gfg):
     print('This is an outer class')
  
  # create a 1st inner class 
  class Inner:
   
   def __init__(self):
     # create a inner class of inner class object
     self.innerclassofinner = self.Innerclassofinner()
    
   def show(self):
    print('This is the inner class')
    
   # create a inner class of inner
   class Innerclassofinner:
           
      def show(self):
         print()
                 
      def show(self):
         print('This is an inner class of inner class')
  
# create a outer class object 
# i.e.Geeksforgeeks class object
outer = Geeksforgeeks()
outer.show()
print()
  
# create a inner class object 
gfg1 = outer.inner
gfg1.show()
print()
  
# create a inner class of inner class object
gfg2 = outer.inner.innerclassofinner
gfg2.show()

输出: