__init__ en Python

Requisitos previos: clase de Python , objetos , uno mismo Siempre que la programación orientada a objetos se realiza en Python, la mayoría de las veces nos encontramos con el método __init__ en Ups, que generalmente no entendemos por completo. Este artículo explica el concepto principal de __init__ pero antes de entender __init__ se requieren algunos requisitos previos.

¿Qué es __init__ en Python?

El constructor __init__ predeterminado en C++ y Java. Los constructores se utilizan para inicializar el estado del objeto. La tarea de los constructores es inicializar (asignar valores) a los miembros de datos de la clase cuando se crea un objeto de la clase. Al igual que los métodos, un constructor también contiene una colección de declaraciones (es decir, instrucciones) que se ejecutan en el momento de la creación del objeto. Se ejecuta tan pronto como se instancia un objeto de una clase. El método es útil para hacer cualquier inicialización que quieras hacer con tu objeto.

Ejemplo: 

Python3

# A Sample class with init method
class Person:
 
    # init method or constructor
    def __init__(self, name):
        self.name = name
 
    # Sample Method
    def say_hi(self):
        print('Hello, my name is', self.name)
 
 
p = Person('Nikhil')
p.say_hi()

Producción:

Hello, my name is Nikhil

Entendiendo el código

En el ejemplo anterior, se crea un nombre de persona Nikhil. Al crear una persona, se pasa «Nikhil» como argumento, este argumento se pasará al método __init__ para inicializar el objeto. La palabra clave self representa la instancia de una clase y vincula los atributos con los argumentos dados. De manera similar, se pueden crear muchos objetos de la clase Person pasando diferentes nombres como argumentos. A continuación se muestra el ejemplo de init en python con parámetros

Ejemplo de __init__ 

Python3

# A Sample class with init method
class Person:
 
    # init method or constructor
    def __init__(self, name):
        self.name = name
 
    # Sample Method
    def say_hi(self):
        print('Hello, my name is', self.name)
 
 
# Creating different objects
p1 = Person('Nikhil')
p2 = Person('Abhinav')
p3 = Person('Anshul')
 
p1.say_hi()
p2.say_hi()
p3.say_hi()

Producción:

Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul

__init__ con herencia

La herencia es la capacidad de una clase para derivar o heredar las propiedades de alguna otra clase. Consideremos el siguiente ejemplo para ver cómo funciona __init__ en herencia. 

Python3

# Python program to
# demonstrate init with
# inheritance
 
class A(object):
    def __init__(self, something):
        print("A init called")
        self.something = something
 
 
class B(A):
    def __init__(self, something):
        # Calling init of parent class
        A.__init__(self, something)
        print("B init called")
        self.something = something
 
 
obj = B("Something")

Producción:

A init called
B init called

Entonces, primero se llama al constructor de la clase principal. Pero en Python, no es obligatorio que el constructor de la clase principal siempre se llame primero. Se puede modificar el orden en el que se llama al método __init__ para una clase principal o secundaria. Esto se puede hacer simplemente llamando al constructor de la clase principal después del cuerpo del constructor de la clase secundaria. 

Ejemplo: 

Python3

# Python program to
# demonstrate init with
# inheritance
 
class A(object):
    def __init__(self, something):
        print("A init called")
        self.something = something
 
 
class B(A):
    def __init__(self, something):
        print("B init called")
        self.something = something
        # Calling init of parent class
        A.__init__(self, something)
 
 
obj = B("Something")

Producción:

B init called
A init called

Nota: Para saber más sobre la herencia haz click aquí .

Publicación traducida automáticamente

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