1

我正在制作一个愚蠢的小游戏来学习 Python,但在使用init创建地精生物时遇到了问题

这是通用的生物类构造函数

class Creature(object):
    def __init__(self,str,dex,wis,n):

这是对它的调用:

goblin = Creature(randint(1,2),randint(1,2),(randint(1,2),"Goblin"))

这是我得到的错误

TypeError: __init__() takes exactly 5 arguments (4 given)

同样奇怪的是,我以几乎相同的方式创建 Player 生物,但没有错误

player = Player(str,dex,wis,name)

Player是一个子类Creature

4

3 回答 3

5

您已将第三个参数作为元组提供:

goblin = Creature(randint(1,2),randint(1,2),(randint(1,2),"Goblin"))

我假设你想要这个单独的,所以只需删除括号:

goblin = Creature(randint(1,2),randint(1,2),randint(1,2),"Goblin")

第五个参数是self,自动调用。

于 2013-04-27T23:05:38.390 回答
2

self它与你有四个参数并传递三个无关:

randint(1,2),
randint(1,2),
(randint(1,2),"Goblin")
于 2013-04-27T23:05:49.187 回答
2

您在Creature构造函数的最后 2 个参数周围有括号。这被解释为一个元组(单个 arg)而不是 2 个单独的 args。

于 2013-04-27T23:06:01.120 回答