TypeError: Super does not take Key word arguments?
首先,我的代码是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class Enemy(): def __init__(self, name, hp, damage): self.name = name self.hp = hp self.damage = damage def is_alive(self): """Checks if alive""" return self.hp > 0 class WildBoar(Enemy): def __init__(self): super(WildBoar, name="Wild Boar", hp=10, damage=2).__init__() class Marauder(Enemy): def __init__(self): super(Marauder, name="Marauder", hp=20, damage=5).__init__() class Kidnappers(Enemy): def __init__(self): super(Kidnappers, name="The Kidnappers", hp=30, damage=7).__init__() |
当我编译这个时,我得到了这个错误:
1 2 | super(WildBoar, name="Wild Boar", hp=10, damage=2).__init__() TypeError: super does not take keyword arguments |
我四处寻找帮助,但什么也找不到。我在其他班级的超级市场上也有一些关卡,但这些都是引发任何问题的关卡(目前为止)。那么是什么导致了这一切呢?我还看到有人说将
父级的
1 2 3 | super(Kidnappers, self).__init__(name="The Kidnappers", hp=30, damage=7) # or super(Kidnappers, self).__init__("The Kidnappers", 30, 7) |
您所传递给
但是请注意,如果您使用的是python 3.x,那么您需要做的就是:
1 | super().__init__("The Kidnappers", 30, 7) |
而python将解决剩下的问题。
以下是一些链接,指向文档中解释的位置:
- python 2.x
super() 。 - python 3.x
super() 。
选项1:python 2.7x
在这里,您可以将
1 | super(self, name="Wild Boar", hp=10, damage=2).__init__() |
选项2:python 3x
1 | super().__init__("The Kidnappers", 30, 7) |