Python __init __(a,b,c,d)没有将“self”识别为参数

时间:2013-04-27 23:01:54

标签: python class init

我正在制作一个愚蠢的小游戏来学习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)

PlayerCreature

的子类

3 个答案:

答案 0 :(得分: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,会自动调用。

答案 1 :(得分:2)

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

randint(1,2),
randint(1,2),
(randint(1,2),"Goblin")

答案 2 :(得分:2)

你在Creature构造函数的最后2个参数附近有括号。这被解释为一个元组(单个arg),而不是两个独立的args。