首先,这是我的代码:
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__()
当我编译此文件时,会出现以下错误:
super(WildBoar, name="Wild Boar", hp=10, damage=2).__init__()
TypeError: super does not take keyword arguments
我试着四处寻找帮助,但什么也找不到。我在另一个班级的超级教室里也有一些夸尔格语,但这些是引起任何问题的原因(目前为止)。那是什么导致的呢?我还看到有人说,在基类中放一个super
可以修复它,但它没有起作用(我传入的参数与基类的__init__
中的参数相同)。
选项1:Python 2.7x
在这里,您可以将
self
keywork传递给super(),super()固有地引用实例属性。选项2:Python 3x
super()
不再需要任何参数,您只需编写父方法的
__init__
的参数应传递给__init__
方法:传递给
super()
的只是子类(在本例中是Kidnappers
)和对当前实例的引用(self
)。不过,请注意,如果您使用的是Python3.x,则只需执行以下操作:
剩下的部分由Python来解决。
以下是文档中对此进行说明的一些链接:
相关问题 更多 >
编程相关推荐