-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLesson_3_1.py
More file actions
48 lines (40 loc) · 1.81 KB
/
Copy pathLesson_3_1.py
File metadata and controls
48 lines (40 loc) · 1.81 KB
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
"""
Задание 1.
Напишите класс для хранения информации о человеке:
ФИО, возраст и т.п. на ваш выбор.
У класса должны быть методы birthday для увеличения
возраста на год, full_name для вывода полного ФИО и т.п. на
ваш выбор.
Убедитесь, что свойство возраст недоступно для прямого
изменения, но есть возможность получить текущий возраст.
"""
class Person:
def __init__(self, first_name: str, last_name: str, middle_name: str = None, age: int = 0):
self.first_name = first_name
self.middle_name = middle_name
self.last_name = last_name
if age < 0:
raise ValueError("Возраст не может быть отрицательным")
self._age = age
@property
def age(self) -> int:
#Только для чтения: возвращает текущий возраст
return self._age
def full_name(self) -> str:
#Возвращает ФИО человека
parts = [self.first_name]
if self.middle_name:
parts.append(self.middle_name)
parts.append(self.last_name)
return " ".join(parts)
def birthday(self) -> None:
#Увеличивает возраст на один год
self._age += 1
def __str__(self) -> str:
return f"{self.full_name()}, возраст: {self.age}"
# Создаём объект человека
p = Person(first_name="Иван", middle_name="Сергеевич", last_name="Бунин", age=30)
print(p)
p.birthday()
print(f"После дня рождения: {p.age} лет")
print("ФИО:", p.full_name())