forked from Turonk/character_creation_module
-
Notifications
You must be signed in to change notification settings - Fork 0
/
temp.py
71 lines (56 loc) · 2.8 KB
/
temp.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
69
70
71
class Sword:
def __init__(self, name, blade_length, grip, material='сталь'):
self.name = name
self.blade_length = blade_length
self.material = material
self.grip = grip
self.strength = 10
print(f'Новый меч {name} выкован!')
def slashing_blow(self):
self.strength -= 10
return (f'Нанесён рубящий удар мечом {self.name}. '
f'Радиус поражения: {self.blade_length}.')
def piercing_strike(self):
self.strength -= 5
return (f'Нанесён пронзающий удар мечом {self.name}. '
f'Рукоять {self.grip} мягко легла в руку.')
def sharpen(self):
self.strength = 100
return (f'Меч "{self.name}" заточен,'
f' {self.material} отлично поддалась обработке.')
# Вот он — новый метод! Именно в нём описывается то, что должно выводиться
# при печати объекта.
def __str__(self):
# Можно задать любую строку, например
# «Не печатай меня, ведь я — объект!».
# Но лучше пусть при печати выводится что-то осмысленное,
# например имя объекта и его основные параметры.
return (
f'Меч — «{self.name}». '
f'Выкован из материала {self.material}, '
f'длина клинка — {self.blade_length}, '
f'прочность — {self.strength}.'
)
katana = Sword('Верный', 1.5,
'хват двумя руками')
classic_sword = Sword('Дежурный', 1.2,
'хват одной рукой')
# Печатаем созданные объекты.
print(katana)
print(classic_sword)
class Axe(MeleeWeapon):
def __init__(self, name, material):
super().__init__(name)
self.material = material
# Объявляем собственный для класса Axe метод.
def slashing_blow(self):
# Описываем логику работы метода дочернего класса.
print('СОКРУШИТЕЛЬНЫЙ УДАР!')
# Возвращаем результат выполнения метода slashing_blow() в родительском классе.
return super().slashing_blow()
brodex = Axe('Верный', 'железо')
print(brodex.slashing_blow())
...
# Вывод в терминал:
# СОКРУШИТЕЛЬНЫЙ УДАР!
# Нанесён рубящий удар оружием Верный.