Python - Как вернуть переменной объекта начальное значение?
подскажите пожалуйста, как вернуть переменной объекта значение по умолчанию / начальное значение?
В примере ниже - объект пистолет, после выстрела кол-во патронов -1, после применения метода reloading кол-во патронов должно стать начальным - 10. Если прописываем 10 напрямую в методе reloading, то для любого другого объекта, с начальным значением bullet, отличным от 10 "перезарядка" будет некорректной...
def __init__(self, name, damage, bullet):
self.name = name
self.bullet = bullet
self.damage = damage
def shot(self):
self.bullet -= 1
return (f'Произведен выстрел из "{self.name}"!\n'
f'Нанесен урон: {self.damage}\n'
f'Осталось патронов: {self.bullet}\n')
"Метод 'Перезарядить оружие'."
def reloading(self):
self.bullet = 10
return (f'"{self.name}" перезаряжен!\n'
f'Патронов: {self.bullet}\n''')
def __str__(self):
return (
f'Текущее состояние оружия: «{self.name}»\n'
f'Урон: {self.damage}\n'
f'Патронов: {self.bullet}\n'
)
first_gun = Gun('Пистолет Макарова', damage=5, bullet=10)
print(first_gun)
print(first_gun.shot())
print(first_gun.reloading())
print(first_gun)```
Ответы (1 шт):
Для этого нужно это начальное значение запомнить.
Если вы в __init__() прописываете именно максимальную вместимость, то тогда у вас должно быть 2 переменных - максимальная вместимость (размер обоймы) и текущее количество патронов. И в reloading() делать текущее количество патронов = размер обоймы
def __init__(self, name, damage, clip):
self.name = name
self.clip = clip # размер обоймы
self.bullet = self.clip # текущее количество патронов
self.damage = damage
def shot(self):
self.bullet -= 1 # бесконечное количество патронов
"Метод 'Перезарядить оружие'."
def reloading(self):
self.bullet = self.clip
И ещё момент - формально у вас сейчас бесконечная обойма, т.к. вы при выстреле не проверяете закончились ли патроны. У вас будет количество патронов -1 а вы будете продолжать стрелять.