Herencia en la clase interna de Python

Una clase es un proyecto o prototipo definido por el usuario a partir del cual se crean objetos. Las clases proporcionan un medio para agrupar datos y funcionalidad. La creación de una nueva clase crea un nuevo tipo de objeto, lo que permite crear nuevas instancias de ese tipo. Cada instancia de clase puede tener atributos adjuntos para mantener su estado. Las instancias de clase también pueden tener métodos (definidos por su clase) para modificar su estado.

Una clase interna o clase anidada se define dentro del cuerpo de otra clase. Si se crea un objeto usando una clase, se puede usar el objeto dentro de la clase raíz. Una clase puede tener una o más de una clase interna. La clase interna o clase anidada ayuda al usuario de muchas maneras, como la agrupación lógica de clases, más legible y fácil de mantener, etc.

Por ejemplo, considere una situación en la que una fecha de nacimiento de clase está dentro de otra persona de clase y vea el fragmento de código a continuación.

class person:
    def __init__(self):
        self.name = 'AKASH'
        self.db = self.Dob()   #this is Dob object

En el código anterior, ‘db.’ representar el objeto de la clase interna. Cuando se crea el objeto de clase externo, contiene un subobjeto que es un objeto de clase interno. Por lo tanto, podemos referirnos a la clase externa y a los miembros de la clase interna como:

p = person()  #create outer class object
p.display()   #call outer class method


x = p.db     #create inner class object
x.display()    #call inner class method

Ejemplo:

# Python program to demonstrate
# inner class
  
  
class person:
    def __init__(self):
        self.name = 'AKASH'
        self.db = self.Dob()
          
    def display(self):
        print('NAME = ', self.name)
          
    # this is inner class
    class Dob:
        def __init__(self):
            self.dd = 10
            self.mm = 3
            self.yy = 2000
        def display(self):
            print('DOB = {}/{}/{}'.format(self.dd, self.mm, self.yy))
              
# creating person class object
p = person()
p.display()
  
# create inner class object
x = p.db
x.display()

Producción:

NAME =  AKASH
DOB = 10/3/2000

Herencia en clase interna

La herencia es la capacidad de una clase para derivar o heredar las propiedades de otra clase. Los beneficios de la herencia son:

  • Representa bien las relaciones del mundo real.
  • Proporciona la reutilización de un código. No tenemos que escribir el mismo código una y otra vez. Además, nos permite agregar más características a una clase sin modificarla.
  • Es de naturaleza transitiva, lo que significa que si la clase B hereda de otra clase A, entonces todas las subclases de B heredarán automáticamente de la clase A.

Para usar la herencia en la clase interna, considere el siguiente fragmento de código.

# Python program to demonstrate
# inheritance in inner class
  
  
class A:
    def __init__(self):
        self.db = self.Inner()
          
    def display(self):
        print('In Parent Class')
          
    # this is inner class
    class Inner:
              
        def display1(self):
            print('Inner Of Parent Class')
              
              
class B(A):
    def __init__(self):
        print('In Child Class')
        super().__init__()
          
    class Inner(A.Inner):
          
        def display2(self):
            print('Inner Of Child Class')
              
# creating child class object
p = B()
p.display()
  
# create inner class object
x = p.db
x.display1()
x.display2()

Producción:

In Child Class
In Parent Class
Inner Of Parent Class
Inner Of Child Class

En el ejemplo anterior, la clase B hereda de A y la clase interna de B hereda de la clase interna de A. Luego, los métodos de clase de la clase interna de los padres se llaman desde el objeto de la clase interna del hijo.

Publicación traducida automáticamente

Artículo escrito por akash22675 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 *