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