В програмуванні на Python існують різні типи методів, які можна використовувати при створенні класів. Серед них особливе місце займають методи класу, статичні методи та методи екземпляра. Розуміння їхнього призначення та використання може значно полегшити написання коду та зробити його більш структурованим.
Методи екземпляра
Методи екземпляра – це ті методи, які викликаються на конкретних об’єктах класу. Їх головне призначення – працювати з конкретними властивостями об’єкта. У методах екземпляра доступ до властивостей об’єкта здійснюється через ключове слово self
. Наприклад, у класі Rectangle
метод get_area
, який обчислює площу прямокутника, є методом екземпляра:
1 2 |
def get_area(self) -> float: return self.height * self.width |
Цей метод можна викликати на конкретному об’єкті класу Rectangle
, і він буде повертати площу цього прямокутника.
Статичні методи
Статичні методи – це методи, які не мають доступу до властивостей об’єкта або класу. Вони не отримують self
або cls
як перший аргумент. Статичні методи зазвичай використовуються, коли функція пов’язана з класом, але не з конкретними екземплярами класу. Вони дозволяють організувати код, який логічно пов’язаний з класом, але не використовує властивості об’єктів класу або сам клас. Наприклад, метод which_is_bigger
в класі Rectangle
порівнює площі двох прямокутників і повертає більший:
1 2 3 4 5 6 7 8 9 |
@staticmethod def which_is_bigger(rect_1, rect_2) -> object: """бере два об'єкти Rectangle та повертає посилання Rectangle на той, який має більшу площу.""" if rect_1.get_area() > rect_2.get_area(): return rect_1 else: return rect_2 |
Цей метод можна викликати без створення об’єктів класу Rectangle
, оскільки він не залежить від конкретних екземплярів класу.
Методи класу
Методи класу схожі на статичні методи, але вони мають доступ до класу через аргумент cls
. Вони можуть змінювати стан класу, але не мають доступу до конкретних екземплярів класу. Використання методів класу зазвичай виправдано, коли потрібно змінити стан самого класу або коли поведінка методу пов’язана з класом в цілому, а не з конкретними екземплярами. У класі Rectangle
метод set_default_dim
встановлює нові значення для константи default_dimension
:
1 2 3 4 |
@classmethod def set_default_dim(cls, new_dimension) -> bool: cls.default_dimension = new_dimension return True |
Цей метод можна викликати на самому класі Rectangle
, і він змінить значення константи для всіх екземплярів класу.
В цілому, розуміння відмінностей між методами класу, статичними методами та методами екземпляра допомагає краще організувати код та використовувати його відповідно до потреб програми.