缺少1个必需的位置参数

28
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");

错误:

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

错误告诉我在名称中需要一个更多的参数,所以我一定在那里出错了,但我已经尝试过类似这样的东西了:
first.createname("bobby", "timmy");

我也排除了可能是def createname(self, name)这一事实,因为self应该是独立的,不应该被包含在内。所以我真的不明白发生了什么。

8
很抱歉,但在Python中,分号(“;”)从未用于行末……(虽然有例外,但这些也是不好的编程实践)。 - adho12
1个回答

23

您尚未实际创建对象。

例如,您可能想编写:

first = classname()

不仅仅只是

first = classname

目前,您的写法中,first指向一个。例如,如果您问first是什么,您会得到:

<class '__main__.classname'>

然而,在实例化它后(只需在末尾添加 ()),您会发现 first 现在是:

<__main__.classname object at 0x101cfa3c8>

这里的重要区别是,你的调用设置first作为一个,而我的将其设置为一个对象

想象一下:类对于对象就像人类对于你一样,或者犬科对于拉西(Lassie)一样。

你将其设置为“犬科”,而你想将其设置为“拉西”。


注意:通常情况下,您也需要初始化您的对象。为此,在您的类中放置一个__init__方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接