У меня проблемы с попыткой распечатать статистику игрока в функции класса. Когда я запускаю его, он не печатается.
class Player(object):
def __init__(self, name, hp, dmg, lvl, inventory, speed):
self.name = name
self.hp = hp
self.dmg = dmg
self.lvl = lvl
self.inventory = inventory
self.speed = speed
def printStats(self):
return("Health: " + self.hp + ", Attack Damage: " + self.dmg + ", Level: " + self.lvl + ", Speed: " + self.speed)
link = Player("Link", 10, 3, 1, {}, 3)
link.printStats
4 ответа
Если вы хотите распечатать статистику, вы должны напечатать статистику.
def printStats(self):
print("Health: " + ...)
Вам также необходимо вызвать функцию (обратите внимание на завершающие скобки):
link.printStats()
Несколько более питоническим решением было бы изменить то, что печатается при печати объекта. Вы можете сделать это, определив метод __str__
. Затем просто передайте свой объект команде печати.
class Player(object):
def __init__(self, name, hp, dmg, lvl, inventory, speed):
self.name = name
self.hp = hp
self.dmg = dmg
self.lvl = lvl
self.inventory = inventory
self.speed = speed
def __str__(self):
return "Health: %s Attack Damage: %s Level: %s Speed: %s" % (self.hp, self.dmg, self.lvl, self.speed)
link = Player("Link", 10, 3, 1, {}, 3)
print(link)
Вместо этого вы можете использовать __repr__(self)
функцию:
class Player(object):
def __init__(self, name, hp, dmg, lvl, inventory, speed):
self.name = name
self.hp = hp
self.dmg = dmg
self.lvl = lvl
self.inventory = inventory
self.speed = speed
def __repr__(self):
return("Health: " + self.hp + ", Attack Damage: " + self.dmg + ", Level: " + self.lvl + ", Speed: " + self.speed)
link = Player("Link", 10, 3, 1, {}, 3)
print link
Когда вы запускаете программу в режиме IDLE или REPL, python автоматически печатает возвращаемое значение функции. Так что замените это:
def printStats(self):
return("Health: " + ...)
С этим:
def printStats(self):
print("Health: " + ...)
Вы также не смогли вызвать функцию (т.е. запустить).
link.printStats
Просто говорит: «Хорошо, найди мне функцию printStats по ссылке».
Вы не запустили его, вы просто получили его.
Попробуйте вместо этого:
link.printStats()
Кстати, соглашение Python гласит, что вы не должны использовать надписи CamelCase для функций. Вместо этого используйте name_with_underscores.
В зависимости от того, в какой версии Python вы работаете, вам нужно сделать это
для Python 2.7
print link.printStats()
для Python 3.x
print(link.printStats())
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.