【问题标题】:Missing 1 required positional argument缺少 1 个必需的位置参数
【发布时间】:2014-09-13 19:38:54
【问题描述】:

在编程方面我是最年轻的,但一直在进步。然而,我的头脑仍然需要完全理解正在发生的事情。

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'

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

first.createname("bobby", "timmy");

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

【问题讨论】:

  • 很抱歉,但在 python 中,分号(“;”)从不在行尾使用......(有例外,但这些也是不好的做法)

标签: python class typeerror


【解决方案1】:

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

例如,你会想写:

first = classname()

而不仅仅是

first = classname

目前,first 指向一个。例如,如果你问first 是什么,你会得到:

<class '__main__.classname'>

但是,在实例化它之后(只需在末尾添加 ()),您会看到 first 现在是:

<__main__.classname object at 0x101cfa3c8>

这里的重要区别是 您的 调用将 first 设置为 class,而我将其设置为 对象

这样想:一个类对于一个对象就像人类对于你一样,或者像犬类对于 Lassie。

您将其设置为“canine”,而您想将其设置为“Lassie”。


注意:您通常还需要初始化对象。为此,您在类中放置了一个 __init__ 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 2017-03-27
    • 2019-11-12
    • 2019-12-23
    • 2021-02-01
    • 2020-11-15
    相关资源
    最近更新 更多