logo

Konstruktor Pythona

Konstruktor to specjalny typ metody (funkcji), który służy do inicjowania elementów instancji klasy.

W C++ lub Javie konstruktor ma taką samą nazwę jak jego klasa, ale w Pythonie traktuje go inaczej. Służy do tworzenia obiektu.

Konstruktory mogą być dwojakiego rodzaju.

  1. Konstruktor parametryczny
  2. Konstruktor niesparametryzowany

Definicja konstruktora wykonywana jest w momencie tworzenia obiektu tej klasy. Konstruktorzy sprawdzają również, czy obiekt ma wystarczające zasoby, aby wykonać dowolne zadanie startowe.

Tworzenie konstruktora w Pythonie

W Pythonie metoda __ciepło__() symuluje konstruktora klasy. Ta metoda jest wywoływana podczas tworzenia instancji klasy. Akceptuje samego siebie -keyword jako pierwszy argument umożliwiający dostęp do atrybutów lub metody klasy.

Podczas tworzenia obiektu klasy możemy przekazać dowolną liczbę argumentów, w zależności od __ciepło__() definicja. Służy głównie do inicjowania atrybutów klasy. Każda klasa musi mieć konstruktora, nawet jeśli po prostu opiera się na konstruktorze domyślnym.

Rozważ następujący przykład, aby zainicjować plik Pracownik atrybuty klasy.

Przykład

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

Wyjście:

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

Liczenie liczby obiektów klasy

Konstruktor wywoływany jest automatycznie, gdy tworzymy obiekt klasy. Rozważ następujący przykład.

Przykład

 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) 

Wyjście:

 The number of students: 3 

Konstruktor niesparametryzowany w Pythonie

Konstruktora niesparametryzowanego używamy, gdy nie chcemy manipulować wartością, lub konstruktora, który ma tylko self jako argument. Rozważ następujący przykład.

Przykład

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

Konstruktor parametryczny Pythona

Sparametryzowany Konstruktor ma wiele parametrów wraz z samego siebie . Rozważ następujący przykład.

Przykład

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

Wyjście:

 This is parametrized constructor Hello John 

Domyślny konstruktor Pythona

Jeśli nie dołączymy konstruktora do klasy lub zapomnimy go zadeklarować, stanie się on konstruktorem domyślnym. Nie wykonuje żadnego zadania, ale inicjuje obiekty. Rozważ następujący przykład.

Przykład

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

Wyjście:

 101 Joseph 

Więcej niż jeden konstruktor w jednej klasie

Przyjrzyjmy się innemu scenariuszowi, co się stanie, jeśli zadeklarujemy w klasie dwa takie same konstruktory.

Przykład

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

Wyjście:

 The Second Constructor 

W powyższym kodzie obiekt ul nazywany drugim konstruktorem, podczas gdy oba mają tę samą konfigurację. Pierwsza metoda nie jest dostępna dla ul obiekt. Wewnętrznie obiekt klasy będzie zawsze wywoływał ostatniego konstruktora, jeśli klasa ma wiele konstruktorów.

Uwaga: Przeciążanie konstruktora nie jest dozwolone w Pythonie.

Wbudowane funkcje klasowe Pythona

Funkcje wbudowane zdefiniowane w klasie zostały opisane w poniższej tabeli.

SN Funkcjonować Opis
1 getattr(obiekt, nazwa, domyślne) Służy do uzyskania dostępu do atrybutu obiektu.
2 setattr(obiekt, nazwa, wartość) Służy do ustawienia określonej wartości konkretnego atrybutu obiektu.
3 delattr(obiekt, nazwa) Służy do usunięcia określonego atrybutu.
4 hasattr(obiekt, nazwa) Zwraca wartość true, jeśli obiekt zawiera określony atrybut.

Przykład

 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) 

Wyjście:

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

Wbudowane atrybuty klas

Oprócz innych atrybutów klasa Pythona zawiera także wbudowane atrybuty klasy, które dostarczają informacji o klasie.

Wbudowane atrybuty klas podano w poniższej tabeli.

SN Atrybut Opis
1 __dykt__ Udostępnia słownik zawierający informacje o przestrzeni nazw klas.
2 __doc__ Zawiera ciąg znaków, który zawiera dokumentację klasy
3 __nazwa__ Służy do uzyskiwania dostępu do nazwy klasy.
4 __moduł__ Służy do dostępu do modułu, w którym zdefiniowana jest ta klasa.
5 __bazy__ Zawiera krotkę zawierającą wszystkie klasy bazowe.

Przykład

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

Wyjście:

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