logo

Constructor de Python

Un constructor es un tipo especial de método (función) que se utiliza para inicializar los miembros de instancia de la clase.

En C++ o Java, el constructor tiene el mismo nombre que su clase, pero trata al constructor de manera diferente en Python. Se utiliza para crear un objeto.

Los constructores pueden ser de dos tipos.

  1. Constructor parametrizado
  2. Constructor no parametrizado

La definición del constructor se ejecuta cuando creamos el objeto de esta clase. Los constructores también verifican que haya suficientes recursos para que el objeto realice cualquier tarea de inicio.

Creando el constructor en Python

En Python, el método __calor__() simula el constructor de la clase. Este método se llama cuando se crea una instancia de la clase. Acepta el ser -palabra clave como primer argumento que permite acceder a los atributos o método de la clase.

Podemos pasar cualquier número de argumentos al momento de crear el objeto de clase, dependiendo del __calor__() definición. Se utiliza principalmente para inicializar los atributos de clase. Cada clase debe tener un constructor, incluso si simplemente depende del constructor predeterminado.

Considere el siguiente ejemplo para inicializar el Empleado atributos de clase.

Ejemplo

 class Employee: def __init__(self, name, id): self.id = id self.name = name def display(self): print('ID: %d 
Name: %s' % (self.id, self.name)) emp1 = Employee('John', 101) emp2 = Employee('David', 102) # accessing display() method to print employee 1 information emp1.display() # accessing display() method to print employee 2 information emp2.display() 

Producción:

 ID: 101 Name: John ID: 102 Name: David 

Contar el número de objetos de una clase.

El constructor se llama automáticamente cuando creamos el objeto de la clase. Considere el siguiente ejemplo.

Ejemplo

 class Student: count = 0 def __init__(self): Student.count = Student.count + 1 s1=Student() s2=Student() s3=Student() print('The number of students:',Student.count) 

Producción:

 The number of students: 3 

Constructor no parametrizado de Python

El constructor no parametrizado se utiliza cuando no queremos manipular el valor o el constructor que solo tiene a self como argumento. Considere el siguiente ejemplo.

Ejemplo

 class Student: # Constructor - non parameterized def __init__(self): print('This is non parametrized constructor') def show(self,name): print('Hello',name) student = Student() student.show('John') 

Constructor parametrizado de Python

El constructor parametrizado tiene múltiples parámetros junto con el ser . Considere el siguiente ejemplo.

Ejemplo

 class Student: # Constructor - parameterized def __init__(self, name): print('This is parametrized constructor') self.name = name def show(self): print('Hello',self.name) student = Student('John') student.show() 

Producción:

 This is parametrized constructor Hello John 

Constructor predeterminado de Python

Cuando no incluimos el constructor en la clase o nos olvidamos de declararlo, se convierte en el constructor predeterminado. No realiza ninguna tarea pero inicializa los objetos. Considere el siguiente ejemplo.

Ejemplo

 class Student: roll_num = 101 name = 'Joseph' def display(self): print(self.roll_num,self.name) st = Student() st.display() 

Producción:

 101 Joseph 

Más de un constructor en una sola clase

Echemos un vistazo a otro escenario, ¿qué sucede si declaramos los dos mismos constructores en la clase?

Ejemplo

 class Student: def __init__(self): print('The First Constructor') def __init__(self): print('The second contructor') st = Student() 

Producción:

 The Second Constructor 

En el código anterior, el objeto calle llamado el segundo constructor mientras que ambos tienen la misma configuración. El primer método no es accesible para el calle objeto. Internamente, el objeto de la clase siempre llamará al último constructor si la clase tiene varios constructores.

Nota: La sobrecarga del constructor no está permitida en Python.

Funciones de clase integradas de Python

Las funciones integradas definidas en la clase se describen en la siguiente tabla.

SN Función Descripción
1 getattr(obj,nombre,predeterminado) Se utiliza para acceder al atributo del objeto.
2 setattr(obj,nombre,valor) Se utiliza para establecer un valor particular para el atributo específico de un objeto.
3 delattr(obj, nombre) Se utiliza para eliminar un atributo específico.
4 hasattr(obj, nombre) Devuelve verdadero si el objeto contiene algún atributo específico.

Ejemplo

 class Student: def __init__(self, name, id, age): self.name = name self.id = id self.age = age # creates the object of the class Student s = Student('John', 101, 22) # prints the attribute name of the object s print(getattr(s, 'name')) # reset the value of attribute age to 23 setattr(s, 'age', 23) # prints the modified value of age print(getattr(s, 'age')) # prints true if the student contains the attribute with name id print(hasattr(s, 'id')) # deletes the attribute age delattr(s, 'age') # this will give an error since the attribute age has been deleted print(s.age) 

Producción:

 John 23 True AttributeError: 'Student' object has no attribute 'age' 

Atributos de clase incorporados

Junto con los demás atributos, una clase de Python también contiene algunos atributos de clase integrados que proporcionan información sobre la clase.

Los atributos de clase integrados se proporcionan en la siguiente tabla.

SN Atributo Descripción
1 __dict__ Proporciona el diccionario que contiene información sobre el espacio de nombres de la clase.
2 __doc__ Contiene una cadena que tiene la documentación de la clase.
3 __nombre__ Se utiliza para acceder al nombre de la clase.
4 __módulo__ Se utiliza para acceder al módulo en el que está definida esta clase.
5 __bases__ Contiene una tupla que incluye todas las clases base.

Ejemplo

 class Student: def __init__(self,name,id,age): self.name = name; self.id = id; self.age = age def display_details(self): print('Name:%s, ID:%d, age:%d'%(self.name,self.id)) s = Student('John',101,22) print(s.__doc__) print(s.__dict__) print(s.__module__) 

Producción:

 None {'name': 'John', 'id': 101, 'age': 22} __main__