Wpis z mikrobloga

#python #pomocy :)

class Character(object):
def __init__(self, name):
self.health = 100
self.name = name
super(Character,self).__init__()
def printName(self):
print self.name

class Weapon(object):
def __init__(self, weapon, weaponDamage):
self.weapon = weapon
self.weaponDamage = weaponDamage
super(Weapon,self).__init__()

class Pc(Weapon, Character):
def __init__(self):
self.weapon = 'Miecz'
self.weaponDamage = 12
super(Pc,self).__init__(self)

class Archer(Pc):
def __init__(self, name):
self.attackDamage = 10
super(Archer,self).__init__(name)

John = Archer("John")
print John.name, John.weapon, John.weaponDamage, John.attackDamage

i dostaje taki błąd

/usr/bin/python2.7 /home/barricade/Pulpit/python/test.py
Traceback (most recent call last):
File "/home/barricade/Pulpit/python/test.py", line 46, in
John = Archer("John")
File "/home/barricade/Pulpit/python/test.py", line 35, in __init__
super(Archer,self).__init__(name)
TypeError: __init__() takes exactly 1 argument (2 given)

Process finished with exit code 1

wiem że to problem z dziedziczeniem, tylko nie wiem gdzie popełniam błąd. Czytam o super, ale chyba nie rozumiem.
  • 18
@RARvolt: A jak myślisz, dlaczego i jemu usunęły się znaki podkreślenia? ( ͡° ͜ʖ ͡°) Poprzez coś tutaj na wykopie oznacza się tekst napisany kursywą, więc postawienie dwóch podkreśleń obok siebie z automatu sprawia, że nic nie napisaliśmy. W kodzie, który przekleił na pastebina ma dobrze.
@Barricade:
Klasa Archer dziedziczy po Pc. Wykonując super w Archer (super(Archer,self).__init__(name)) wywołujesz funkcję __init__ klasy nadrzędnej, czyli wywołujesz __init__ w Pc. W wywołaniu supera przekazujesz jako parametr name, ale Pc.__init__(self) nie przyjmuje żadnych argumentów oprócz selfa, a przekazujesz dwa: self i name