Как создать экземпляр класса с непостоянными параметрами?
Есть класс:
class Enemy():
""" Противники """
def __init__(self, name, lvl):
""" Описание свойств монстра """
self.name = name
self.lvl = lvl
def printEnemyParam(self):
print ("Монстр " + str(self.name) + " напал на тебя, у него " + str(self.lvl) + " уровень")
def printEnemyHp(self):
print("У " + str(self.name) + " осталось " + str(self.hp) + " жизней")
def enemyChar(self):
self.name = rand.choice(enemyName)
self.lvl = rand.randint(1, 3)
Есть кортеж с именами:
enemyName = ("Злая бабка", "Трудовик", "Сосед Валера", "Социальный педагог", "Гопник Олег")
Я пытаюсь создать экземпляр этого класса, но не могу понять как из метода enemyChar() вытащить и поместить в экземпляр готовые результаты random'а
Enemy1 = Enemy(enemyChar() тут имя, enemyChar() а тут лвл)
И никак не могу понять как это можно сделать?
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Нужно все-таки определиться - вы передаете в конструктор класса наименование и уровень монстра или же они генерятся рандомно при создании объекта. Если они должны генериться, то можно так - вызываете метод enemyChar()
из инита. Тогда передавать аргументы в конструктор бессмысленно.
class Enemy():
""" Противники """
enemyName = ("Злая бабка", "Трудовик", "Сосед Валера", "Социальный педагог", "Гопник Олег")
def __init__(self):
""" Описание свойств монстра """
super().__init__()
self.enemyChar()
def printEnemyParam(self):
print("Монстр " + str(self.name) + " напал на тебя, у него " + str(self.lvl) + " уровень")
def printEnemyHp(self):
print("У " + str(self.name) + " осталось " + str(self.hp) + " жизней")
def enemyChar(self):
self.name = rand.choice(self.enemyName)
self.lvl = rand.randint(1, 3)
self.hp = 5
Enemy1 = Enemy()
Enemy1.printEnemyParam()
Enemy1.printEnemyHp()
Монстр Злая бабка напал на тебя, у него 3 уровень
У Злая бабка осталось 5 жизней
И поскольку enemyChar()
вызывается однократно только при создании объекта, можно все это реализовать в __init__()