Конструктор је посебан тип методе (функције) који се користи за иницијализацију чланова инстанце класе.
У Ц++ или Јави, конструктор има исто име као и његова класа, али другачије третира конструктор у Питхон-у. Користи се за креирање објекта.
Конструктори могу бити два типа.
- Параметризовани конструктор
- Непараметризовани конструктор
Дефиниција конструктора се извршава када креирамо објекат ове класе. Конструктори такође верују да има довољно ресурса за објекат да изврши било који задатак покретања.
Креирање конструктора у Питхон-у
У Питхон-у, метод тхе __топлота__() симулира конструктор класе. Овај метод се позива када је класа инстанцирана. Оно прихвата селф -кључна реч као први аргумент који омогућава приступ атрибутима или методу класе.
Можемо проследити било који број аргумената у време креирања објекта класе, у зависности од __топлота__() дефиниција. Углавном се користи за иницијализацију атрибута класе. Свака класа мора имати конструктор, чак и ако се једноставно ослања на подразумевани конструктор.
Размотрите следећи пример да бисте иницијализовали Запослени атрибути класе.
Пример
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()
Излаз:
ID: 101 Name: John ID: 102 Name: David
Бројање броја објеката класе
Конструктор се позива аутоматски када креирамо објекат класе. Размотрите следећи пример.
Пример
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)
Излаз:
The number of students: 3
Питхон непараметризовани конструктор
Непараметризовани конструктор користи када не желимо да манипулишемо вредношћу или конструктором који има само селф као аргумент. Размотрите следећи пример.
Пример
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')
Питхон параметризовани конструктор
Параметаризовани конструктор има више параметара заједно са селф . Размотрите следећи пример.
Пример
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()
Излаз:
This is parametrized constructor Hello John
Питхон подразумевани конструктор
Када не укључимо конструктор у класу или заборавимо да га декларишемо, онда то постаје подразумевани конструктор. Не обавља никакав задатак већ иницијализује објекте. Размотрите следећи пример.
Пример
class Student: roll_num = 101 name = 'Joseph' def display(self): print(self.roll_num,self.name) st = Student() st.display()
Излаз:
101 Joseph
Више од једног конструктора у једној класи
Хајде да погледамо други сценарио, шта се дешава ако декларишемо два иста конструктора у класи.
Пример
class Student: def __init__(self): print('The First Constructor') def __init__(self): print('The second contructor') st = Student()
Излаз:
The Second Constructor
У горњем коду, објекат ст назива се други конструктор док оба имају исту конфигурацију. Први метод није доступан за ст објекат. Интерно, објекат класе ће увек позвати последњи конструктор ако класа има више конструктора.
Напомена: Преоптерећење конструктора није дозвољено у Питхон-у.
Питхон уграђене функције класе
Уграђене функције дефинисане у класи су описане у следећој табели.
СН | Функција | Опис |
---|---|---|
1 | гетаттр(обј,име,подразумевано) | Користи се за приступ атрибуту објекта. |
2 | сетаттр(обј, име, вредност) | Користи се за постављање одређене вредности специфичном атрибуту објекта. |
3 | делаттр(обј, име) | Користи се за брисање одређеног атрибута. |
4 | хасаттр (обј, име) | Враћа тачно ако објекат садржи неки специфичан атрибут. |
Пример
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)
Излаз:
John 23 True AttributeError: 'Student' object has no attribute 'age'
Уграђени атрибути класе
Заједно са осталим атрибутима, Питхон класа такође садржи неке уграђене атрибуте класе који пружају информације о класи.
Уграђени атрибути класе су дати у табели испод.
СН | Атрибут | Опис |
---|---|---|
1 | __дицт__ | Обезбеђује речник који садржи информације о именском простору класе. |
2 | __доц__ | Садржи стринг који има документацију класе |
3 | __име__ | Користи се за приступ имену класе. |
4 | __модул__ | Користи се за приступ модулу у коме је дефинисана ова класа. |
5 | __базе__ | Садржи тупле који укључује све основне класе. |
Пример
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__)
Излаз:
None {'name': 'John', 'id': 101, 'age': 22} __main__