当前位置: 首页 > 知识库问答 >
问题:

TypeError:__init__()缺少一个必需的位置参数:“name”(Udacity练习)

岳玉书
2023-03-14

这是代码:

class Dog:

    scientific_name = "Canis lupus familiaris"

    def __init__(self, name):
        self.name = name
        self.woofs = 0

    def speak(self):
        print("Woof!")

    def hear(self, words):
        if self.name in words:
            self.speak()

    def count(self):
        self.woofs += 1
        for bark in range(self.woofs):
            self.speak()

class Husky(Dog):
    orgin = 'Siberia'
    
    def speak(self):
        print('Woooha')

在解释器中,我导入这个文件(animals.py)

然后我试着做一些事情

anny = animals.Husky()

我得到了一个错误:

TypeError: __init__() missing 1 required positional argument: 'name'

我从Udacity的编程基础纳米级的解决方案中复制了这段确切的代码。我想一定是我做错了什么?或者是他们的解决方案是错误的?

我不知道该做什么,因为我是个初学者。我试着用同样错误的人的答案,但是他们的问题更加复杂和不同。

如果有任何帮助或指导,我将不胜感激。

共有3个答案

范承志
2023-03-14

我强烈建议您学习面向对象编程和构造函数的概念,而不是从Internet上复制代码。

__init__方法将“name”作为参数存储在anny对象的“name”属性中。您应该在创建对象时传递括号中的name参数。

anny=animals.husky(“anny”)

松雅昶
2023-03-14

您可以看到何时要初始化class Object的实例。__init__(self)函数将自动执行。您可以看到,在您的程序中,def__init__(self,name):有一个属性,即name,因此当您希望使用anny=animals.husky()时,需要为这个属性命名self.namestuff。比如。您可以使用anny=animals.husky(“anny”)

西门洛城
2023-03-14

由于dog__init__函数有两个参数,即self(自动填充)和name,因此在调用dog及其子类husky时,需要提供一个name

 类似资料:
  • 问题内容: 我正在开发一个游戏作为附带项目,很有趣,但是遇到了这个错误,我真的不知道为什么会发生… 这是代码: 我这样称呼它: 我得到的错误是: 有任何想法吗? 问题答案: 您不应直接调用类方法,而应创建该类的实例: 要详细说明该错误,您将得到: TypeError:turn()缺少1个必需的位置参数:“ playerImages” 这是因为需要第一个参数()的实例。类方法总是将实例作为第一个参数

  • 我无法通过错误: 我检查了几个教程,但似乎没有什么不同于我的代码。我唯一能想到的是Python3.3需要不同的语法。 如果我理解正确,会自动传递给构造函数和方法。我做错了什么?

  • 问题内容: 我是python新手,碰壁了。我遵循了一些教程,但无法克服错误: 我检查了一些教程,但似乎与我的代码没有什么不同。我唯一能想到的是python 3.3需要不同的语法。 主要技巧: 泵类: 如果我正确理解,“自我”将自动传递给构造函数和方法。我在这里做错了什么? 我正在将Windows 8与python 3.3.2一起使用 问题答案: 你需要在此处实例化一个类实例。 采用 小例子

  • 问题内容: 我收到以下错误: 问题答案: 您的班级有两个参数,但是在您调用时; 您没有写任何参数。因此,您必须提出两个可能的论点。

  • 我尝试在谷歌中找到解决方案,但谷歌中的所有解决方案都不适合我,也许在这里我得到了正确的答案。 我有以下代码: 我得到了这个错误: 回溯(最后一次调用):文件“位置文件”,第42行,在g=gui_main()文件“位置文件”的第26行,在init btn_next=按钮(self.win_about,text=“next”,fg=“red”,command=gui_main.screen_menu(

  • 我是matplotlib的新手,我试图将文本设置为图形中的一个点,但我有错误: Traceback(最近一次调用):文件main.py,第239行,在main()文件main.py,第232行,在mainp.show_graphic_ortg_drtg()文件/home/josecarlos/Workspace/python/进程/process.py,第363行,show_graphic_ort

  • 我对Python非常陌生,现在我有了第一个真正的问题:我想写一个电子邮件程序,但是我不能使用类来发送邮件。我看到了很多这些错误的答案,但没有一个真正适合我。以下是代码: PS:很抱歉我的英语不好,我是一名德国学生,这就是为什么所有变量和类的名称都是用德语写的,希望这不是问题:)

  • 我正在学习python。我创建了一个包含2个方法的类可视化工具。现在我想在第二个方法中调用第一个方法。我读到我必须使用self: 这很有效。现在我添加了其他参数: 我从我的调用它: 现在我得到一个错误: 我检查了,参数3在那里,参数序列是相同的。我认为它与自我冲突。 我怎样才能解决这个问题?我的类中是否需要init方法? 编辑:在我的主页上: