首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python __init__(a,b,c,d)不承认“自我”为参数

Python __init__(a,b,c,d)不承认“自我”为参数
EN

Stack Overflow用户
提问于 2013-04-27 23:01:54
回答 3查看 1K关注 0票数 1

我正在做一个愚蠢的小游戏来学习Python,我遇到了一个问题,用init创建一个妖精生物

以下是通用的生物类构造函数

代码语言:javascript
复制
class Creature(object):
    def __init__(self,str,dex,wis,n):

这就是对此的呼吁:

代码语言:javascript
复制
goblin = Creature(randint(1,2),randint(1,2),(randint(1,2),"Goblin"))

这是我所犯的错误

代码语言:javascript
复制
TypeError: __init__() takes exactly 5 arguments (4 given)

同样奇怪的是,我创造玩家生物的方式也是一样的,而且没有错误。

代码语言:javascript
复制
player = Player(str,dex,wis,name)

PlayerCreature的子类

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-27 23:05:38

您已经将第三个参数作为元组给出:

代码语言:javascript
复制
goblin = Creature(randint(1,2),randint(1,2),(randint(1,2),"Goblin"))

我假设你想要分开,所以只要去掉括号:

代码语言:javascript
复制
goblin = Creature(randint(1,2),randint(1,2),randint(1,2),"Goblin")

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

票数 5
EN

Stack Overflow用户

发布于 2013-04-27 23:05:49

它与self无关--您有四个对角,并传递了三个:

代码语言:javascript
复制
randint(1,2),
randint(1,2),
(randint(1,2),"Goblin")
票数 2
EN

Stack Overflow用户

发布于 2013-04-27 23:06:01

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16257756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档