-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclass_staticmethod_classmethod.py
45 lines (32 loc) · 2.2 KB
/
class_staticmethod_classmethod.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Коли використовувати методи класу, а коли статичні методи?
'''
Статичні методи використовують декоратор @staticmethod і є методами, які не мають доступу до екземпляру класу тобто змінної self, з якого вони були викликані. Це означає, що статичні методи не можуть змінювати стан об'єкта або класу, але вони можуть бути корисними для виконання деяких операцій, які не залежать від стану об'єкта. Статичні методи можна розглядати як "допоміжні" функції, які мають логічний зв'язок із класом, але не потребують доступу до його атрибутів або методів.
'''
class Item:
@staticmethod
def is_integer():
'''
Це має бути щось, що має зв'язок
з класом, але не те, що повинно бути унікальним
для кожного екземпляру!
'''
@classmethod
def instantiate_from_something(cls):
'''
Це також має бути щось, що пов'язане
з класом, але зазвичай вони використовуються для
маніпулювання різними структурами даних для створення екземплярів
об'єктів
'''
# ЄДИНА ВІДМІННІСТЬ МІЖ НИМИ:
# статичні методи не передають посилання на об'єкт як перший аргумент у фоновому режимі!
# ПРИМІТКА: Однак, їх також можна викликати з екземплярів.
item1 = Item()
item1.is_integer()
item1.instantiate_from_something()
class Geometry:
PI = 3.14159
@staticmethod
def area_of_circle(radius):
return Geometry.PI * radius ** 2
print(Geometry.area_of_circle(5)) # 78.53975