Вам не хватает всего нескольких вещей, но я вам поможем!
Ваш __init__
функция ничего не делает. Давайте дадим ему базовую статистику. Я скажу, что скорость и здоровье по умолчанию Player
будут соответственно 10 и 100. Затем мы сделаем Berserker
a подкласс of Player
(Думаю, это именно то, что вы собираетесь делать?). И, наконец, я дам Player
метод, который позволит вам получить строковый формат для своих значений.
Во-первых, новый Player
:
class Player:
def __init__(self, speed=10, health=100):
self.speed = speed
self.health = health
def __str__(self):
return "A player with speed {} and health {}.".format(self.speed, self.health)
И теперь для Berserker
. Я дам ему базовую скорость 15 и здоровья 85. (Очевидно, что специфика до вас!)
class Berserker(Player):
def __init__(self):
super().__init__(speed=15, health=85)
Наконец, мы можем создать их и напечатать значение. Я сделаю пару разных версий, чтобы вы могли увидеть, как это работает. (И для этого я использую обычный интерпретатор Python).
>>> p1 = Player()
>>> p2 = Player(7, 120)
>>> b = Berserker()
>>> print(p1)
A player with speed 10 and health 100.
>>> print(p2)
A player with speed 7 and health 120.
>>> print(b)
A player with speed 15 and health 85.
Надеюсь, это даст вам хорошее место для начала!
Ваш '__init__' не d o что угодно. Он также выдает «AttributeError» при попытке создать экземпляр вашего класса. Вы должны начать с основного учебника Python, а затем перейти к ООП. –
И ваш метод «Берсерк» не имеет правильного отложения в вашем классе, поэтому он не обрабатывается как метод экземпляра, а функция. – idjaw
Возможно, вы имели в виду, что a berserker является подклассом или экземпляром человека? Потому что это совсем не то, что вы написали. – jonrsharpe