Clase interna en Python

Python es un lenguaje de programación orientado a objetos, todo en Python está relacionado con objetos, métodos y propiedades. Una clase es un plano definido por el usuario o un prototipo, que podemos usar para crear los objetos de una clase. La clase se define utilizando la palabra clave class.

ejemplo de clase

Python3

# create a Geeksforgeeks class
class Geeksforgeeks :
   gfg = 10

En primer lugar, debemos comprender el método integrado __init__() para comprender el significado de las clases. Cada vez que se inicia la clase, siempre se ejecuta un método llamado __init__(). Se usa un método __init__() para asignar los valores a las propiedades del objeto o para realizar el otro método que se requiere para completar cuando se crea el objeto.

Ejemplo: clase con método __init__()

Python3

# 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()

Producción:

Course : Campus Preparation
Duration : As per your schedule 

Clase interna en Python

Una clase definida en otra clase se conoce como clase interna o clase anidada. Si un objeto se crea utilizando una clase secundaria significa una clase interna, entonces el objeto también puede ser utilizado por la clase principal o la clase raíz. Una clase principal puede tener una o más clases internas, pero generalmente se evitan las clases internas.

Podemos hacer que nuestro código esté aún más orientado a objetos usando una clase interna. Un solo objeto de la clase puede contener múltiples subobjetos. Podemos usar múltiples subobjetos para darle una buena estructura a nuestro programa.

Ejemplo:

  • Primero, creamos una clase y luego el constructor de la clase.
  • Después de crear una clase, crearemos otra clase dentro de esa clase, la clase dentro de otra clase se llamará clase interna.

Python3

# 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()

Producción:

 Green
Name:Green

Light Green
023gfd

Name: Light Green
Code: 023gfd

¿Por qué clase interna?

Para la agrupación de dos o más clases. Supongamos que tenemos dos clases remoto y batería. Cada control remoto necesita una batería, pero no se utilizará una batería sin control remoto. Entonces, hacemos de la batería una clase interna para el control remoto. Nos ayuda a ahorrar código. Con la ayuda de la clase interna o la clase anidada, podemos ocultar la clase interna del mundo exterior. Por lo tanto, Ocultar el código es otra buena característica de la clase interna. Al usar la clase interna, podemos comprender fácilmente las clases porque las clases están estrechamente relacionadas. No necesitamos buscar clases en todo el código, están todas casi juntas. Aunque las clases internas o anidadas no se usan ampliamente en Python, será una mejor característica para implementar el código porque es fácil de organizar cuando usamos una clase interna o una clase anidada.

Sintaxis:

# 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() 

Los tipos de clases internas son los siguientes: 

  1. Clase interna múltiple
  2. Clase interna multinivel

Clase interna múltiple

La clase contiene una o más clases internas conocidas como múltiples clases internas. Podemos tener múltiples clases internas en una clase, es fácil implementar múltiples clases internas. 

Ejemplo: clase interna múltiple

Python3

# 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()

Producción:

In outer class
Name: Doctor

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

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

Clase interna multinivel

La clase contiene una clase interna y esa clase interna nuevamente contiene otra clase interna, esta jerarquía se conoce como la clase interna multinivel.

Ejemplo: clase interna multinivel

Python3

# 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()

Producción:

Esta es una clase externa Esta es una clase interna Esta es una clase interna de clase interna significa clase interna multinivel

Publicación traducida automáticamente

Artículo escrito por snigdha_yambadwar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *