У меня есть набег на ООП в python,
Этот проект создает несколько случайно сгенерированных RPG-персонажей
Проблема, с которой я столкнулся, состоит в том, что я создаю список этих случайносгенерированные символы, и хотите распечатать там статистику.
Вот как символы генерируются случайным образом:
def generateCharacters():
classes = ["B", "E", "W", "D", "K"]
choice = random.choice(classes)
if choice == "B":
return barbarian(70, 20, 50)
elif choice == "E":
return elf(30, 60, 10)
elif choice == "W":
return wizard(50, 70, 30)
elif choice == "D":
return dragon(90, 40, 50)
elif choice == "K":
return knight(60, 10, 60)
а вот класс варваров, все остальные классы более или менееидентично:
class barbarian(character):
def __init__(self, charPower, charSAttackPwr, charSpeed):
# Getting the properties from the inheritted character Base Class
character.__init__(self, "B", 100)
self.power = charPower
self.sAttackPwr = charSAttackPwr
self.speed = charSpeed
# Method for getting and returning all the stats of the character
def getStats(self):
# Creating a string to hold all the stats, using concatenation
stats = "Name: %s, Type: %s, Health: %s, Power: %s, Special Attack
Power: %s, Speed: %s" % (self.name, self.type, self.health,
self.power, self.sAttackPwr, self.speed)
# Returns stats to the the function that called
return stats
Я создал метод getStats, который использует конкатенацию строк для создания строки, отображающей все статистические данные:
# Method for getting and returning all the stats of the character
def getStats(self):
# Creating a string to hold all the stats, using concatenation
stats = "Name: %s, Type: %s, Health: %s, Power: %s, Special Attack Power: %s, Speed: %s" % (self.name, self.type, self.health, self.power, self.sAttackPwr, self.speed)
# Returns stats to the the function that called
return stats
Когда я запускаю код, онвызывает main (), которая, в свою очередь, вызывает menu ():
def menu(gameChars):
print("Welcome to the RPG Character Simulator")
print("Here is your randomly generated team: ")
for x in gameChars:
print(x.getStats)
def main():
gameChars = []
for x in range(10):
y = generateCharacters()
gameChars.insert(x, y)
#z = generateCharacters()
menu(gameChars)
#print(z.getStats)
Вывод, который я ожидал от print (x.getStats), был бы, используя примеры:
Name: bob, Type: barbarian, Health: 100, Power: 70, Special Attack Power: 20, Speed: 20
но вместо этого я получаю это:
<bound method barbarian.getStats of <__main__.barbarian object at 0x000001F56A195668>>
Чего мне не хватает с этим?и как я могу получить предполагаемый вывод?
Заранее спасибо за любую помощь