Проблема с суперклассом и подклассами Python - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь создать систему хранения для текстовой игры.Я написал следующий код для объявления необходимых классов:

class Item:
def __init__(self, name, count, health, damage):
    self.name = name
    self.count = count


class Weapon(Item):
    def __init__(self, name, count, health, damage):
        super(Weapon, self).__init__(name, count, damage)
        self.damage = damage

class Food(Item):
    def __init__(self, name, count, health, damage):
        super(Food, self).__init__(name, count, damage, health)

Чтобы проверить, работает ли он, я добавил следующий код в конец файла:

Steak = Food("Steak", 4, 1.5, None)
print("You have {} {}s. Each of them gives you {} health points".format(Steak.count,Steak.name,Steak.health))

Это приводитв ошибке атрибута, говорящей

AttributeError: 'Food' object has no attribute 'health'

Что я делаю не так?(Я начинающий с классов)

1 Ответ

0 голосов
/ 07 октября 2018
class Item:
    def __init__(self, name, count, health, damage):
        self.name = name
        self.count = count
        self.health = health
        self.damage = damage


class Weapon(Item):
    def __init__(self, name, count, health, damage):
        super(Weapon, self).__init__(name, count, health, damage)


class Food(Item):
    def __init__(self, name, count, health, damage):
        super(Food, self).__init__(name, count, damage, health)

Steak = Food("Steak", 4, 1.5, None)
print("You have {} {}s. Each of them gives you {} health points".format(Steak.count,Steak.name,Steak.health))

Это дает вам вывод:

You have 4 Steaks. Each of them gives you None health points

Произведенные изменения:

  1. Атрибуты здоровья, урон добавлен к Суперклассу предмета
  2. класс оружия былтакже отсутствует атрибут здоровья, когда init
...