logo

Construtor Python

Um construtor é um tipo especial de método (função) que é usado para inicializar os membros da instância da classe.

Em C++ ou Java, o construtor tem o mesmo nome de sua classe, mas trata o construtor de maneira diferente em Python. É usado para criar um objeto.

Os construtores podem ser de dois tipos.

  1. Construtor parametrizado
  2. Construtor não parametrizado

A definição do construtor é executada quando criamos o objeto desta classe. Os construtores também verificam se há recursos suficientes para que o objeto execute qualquer tarefa de inicialização.

Criando o construtor em python

Em Python, o método the __aquecer__() simula o construtor da classe. Este método é chamado quando a classe é instanciada. Ele aceita o auto -keyword como primeiro argumento que permite acessar os atributos ou método da classe.

Podemos passar qualquer número de argumentos no momento da criação do objeto de classe, dependendo do __aquecer__() definição. É usado principalmente para inicializar os atributos da classe. Toda classe deve ter um construtor, mesmo que simplesmente dependa do construtor padrão.

Considere o seguinte exemplo para inicializar o Funcionário atributos de classe.

Exemplo

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

Saída:

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

Contando o número de objetos de uma classe

O construtor é chamado automaticamente quando criamos o objeto da classe. Considere o seguinte exemplo.

Exemplo

 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) 

Saída:

 The number of students: 3 

Construtor Python não parametrizado

O construtor não parametrizado utiliza quando não queremos manipular o valor ou o construtor que tem apenas self como argumento. Considere o seguinte exemplo.

Exemplo

 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') 

Construtor parametrizado Python

O construtor parametrizado possui vários parâmetros junto com o auto . Considere o seguinte exemplo.

Exemplo

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

Saída:

 This is parametrized constructor Hello John 

Construtor padrão Python

Quando não incluímos o construtor na classe ou esquecemos de declará-lo, esse se torna o construtor padrão. Não executa nenhuma tarefa, mas inicializa os objetos. Considere o seguinte exemplo.

Exemplo

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

Saída:

 101 Joseph 

Mais de um construtor em uma única classe

Vamos dar uma olhada em outro cenário, o que aconteceria se declararmos os dois mesmos construtores na classe.

Exemplo

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

Saída:

 The Second Constructor 

No código acima, o objeto st chamado de segundo construtor, enquanto ambos têm a mesma configuração. O primeiro método não é acessível pelo st objeto. Internamente, o objeto da classe sempre chamará o último construtor se a classe tiver vários construtores.

Nota: A sobrecarga do construtor não é permitida em Python.

Funções de classe integradas do Python

As funções integradas definidas na classe são descritas na tabela a seguir.

SN Função Descrição
1 getattr(obj,nome,padrão) É usado para acessar o atributo do objeto.
2 setattr(obj, nome, valor) É usado para definir um valor específico para o atributo específico de um objeto.
3 delattr(obj, nome) É usado para excluir um atributo específico.
4 hasattr(obj, nome) Retorna verdadeiro se o objeto contém algum atributo específico.

Exemplo

 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) 

Saída:

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

Atributos de classe integrados

Junto com os outros atributos, uma classe Python também contém alguns atributos de classe integrados que fornecem informações sobre a classe.

Os atributos de classe integrados são fornecidos na tabela abaixo.

SN Atributo Descrição
1 __dict__ Ele fornece o dicionário contendo as informações sobre o namespace da classe.
2 __doc__ Ele contém uma string que contém a documentação da classe
3 __nome__ É usado para acessar o nome da classe.
4 __módulo__ É utilizado para acessar o módulo no qual esta classe está definida.
5 __bases__ Ele contém uma tupla incluindo todas as classes base.

Exemplo

 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__) 

Saída:

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