缺少1个必需的位置参数

Xal*_*all 11 python class typeerror

让我先说一下,我在编程方面一样绿色,但一直在制作流程.然而,我的想法仍然需要完全理解为什么和正在发生的事情.

无论如何标题所暗示的问题,我将把我将保持的源代码粘贴到最低限度.

(我使用的是Python 3.4.1版)


class classname:
    def  createname(self, name):
        self.name = name;
    def displayname(self):
        return self.name;
    def saying(self):
        print("Hello %s" % self.name);

first = classname;
second = classname;

first.createname("Bobby");
Run Code Online (Sandbox Code Playgroud)

我会在这里粘贴错误代码:


Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
first.createname("Bobby")
TypeError: createname() missing 1 required positional argument: 'name'
Run Code Online (Sandbox Code Playgroud)

我知道我需要检查错误并仔细阅读它所说的内容以及在帖子之前进行搜索,完成后并且未能解决问题我来这里发布它...

从这里开始,如果您对我的想法感兴趣,您可以阅读:

错误告诉我,我需要在名称中再添加一个参数,所以我必须在那里出错,但我已经尝试过这样的事情:

first.createname("bobby", "timmy");
Run Code Online (Sandbox Code Playgroud)

名义上有更多的论点?如果我理解正确,论证就在 - >()< -

我也排除了def createname(self,name)这个事实,因为self是或应该是独自存在而不包括在内?所以我真的不明白发生了什么.

如果已经回答了这个问题,请提前感谢对不起,在这种情况下,我一定忽略了它.


解决了:

 first = classname;
 second = classname;
Run Code Online (Sandbox Code Playgroud)

应该:

 first = classname();
 second = classname();
Run Code Online (Sandbox Code Playgroud)

丢失的括号当然意味着我只是将第一个和第二个EQUAL作为其他东西并且不将它与"实际cl"联系起来

Mik*_*son 6

这是一个非常简单的答案,很惊讶你从来没有得到过回复!:(

你还没有真正创建过一个对象.

例如,你想写:

first = classname()
Run Code Online (Sandbox Code Playgroud)

而不仅仅是

first = classname
Run Code Online (Sandbox Code Playgroud)

目前,你如何写它,first指的是一个班级.例如,如果你问什么first是,你会得到:

<class '__main__.classname'>
Run Code Online (Sandbox Code Playgroud)

但是,在实例化之后(通过简单地添加()末尾),你会看到first现在:

<__main__.classname object at 0x101cfa3c8>
Run Code Online (Sandbox Code Playgroud)

这里的重要区别是你的调用创建了一个,而我的创建了一个对象.

一类是人类对你的对象,或者对于Lassie来说就是犬.

你创造了"犬",而你想创造"Lassie".


注意:您通常还想初始化对象.为此,您可以__init__在班级中放置一个方法.