-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdataclass.py
68 lines (43 loc) · 2.41 KB
/
dataclass.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
'''
Модуль dataclasses в Python надає засіб для декларативного визначення класів, які переважно використовуються
для зберігання даних.
Цей модуль введений у Python 3.7, щоб спростити створення таких класів без необхідності ручного написання бойлерплейт (від англ. - boilerplate) коду, який часто повторюється у традиційних класах.
☝ Використання @dataclass дозволяє зменшити кількість коду, необхідного для створення класів, які в основному зберігають дані. Це робить код більш читабельним і легшим для розуміння, а також автоматично створює конструктор класу __init__.
'''
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
#
@dataclass
class Article:
title: str
author: str
views: int = 0
#
'''
Коли ми визначаємо клас Rectangle за допомогою @dataclass, Python автоматично створює метод __init__, який приймає атрибути width та height як параметри, за нас. Це означає, що нам не потрібно явно визначати конструктор класу.
'''
from dataclasses import dataclass
@dataclass
class Rectangle:
width: int
height: int
def area(self) -> int:
return self.width * self.height
'''
Тепер ми можемо створювати екземпляри класу Rectangle:
'''
rect1 = Rectangle(10, 5)
rect2 = Rectangle(7, 3)
rect3 = Rectangle(8, 6)
'''
Кожен екземпляр класу Rectangle має метод area, який обчислює та повертає площу прямокутника, використовуючи атрибути width та height.
'''
print(f"Площа прямокутника 1: {rect1.area()}")
print(f"Площа прямокутника 2: {rect2.area()}")
print(f"Площа прямокутника 3: {rect3.area()}")
"""Площа прямокутника 1: 50
Площа прямокутника 2: 21
Площа прямокутника 3: 48"""