类问题,初始化参数不匹配

2024-09-27 17:32:54 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,我已经四处寻找了一段时间了,请原谅,这可能是一个相当简单的问题,但无论我读了多少个线程的相同错误类型,我不知道我做错了什么。我在概念上遗漏了一些我相信的东西。你知道吗

代码如下:

class Song(object):

    def __init__ (self, lyrics, feliz):
        self.lyrics = lyrics
        self.feliz = "feliz navidad, etc etc"

    def sing_me_a_song(self):
        for line in self.lyrics:
            print line

happy_bday = Song(["\n\nHappy birthday to you",
                "I don't want to get sued",
                "So I'll stop right there.\n\n\n"])

bulls_on_parade = Song(["They rally around the family",
                    "With pockets full of shells.\n"])

happy_bday.sing_me_a_song()

bulls_on_parade.sing_me_a_song()

songz = Song()
print songz.feliz()

下面是我得到的错误:

Traceback (most recent call last):
  File "ex40.py", line 13, in <module>
    "So I'll stop right there.\n\n\n"])
TypeError: __init__() takes exactly 3 arguments (2 given)

我知道这可能是愚蠢的,但我挂断了这个,真的想得到一些帮助。如果这意味着什么,这显然是从LPTHW和我已经编辑了第40课,如果我删除所有的参考费利兹,这是我试图添加我自己的变量类歌曲,然后打印出来的代码词,在最后。先谢谢你。你知道吗


所以我可以通过添加以下内容来实现我想要的:

feliz_navidad = Song(["Feliz navidad",
                    "Feliz navidad",
                    "Prospero anos delicidad.\n"])

feliz_navidad.sing_me_a_song()

但是,除了使用已定义的sing\u me\u a\u song函数之外,没有其他方法可以让我使用类打印字符串吗?你知道吗

我试图引用Song类,让它打印出一个字符串,而不使用内部定义的函数。。。我想这样做很愚蠢。我误解了它的工作原理。。。你知道吗


Tags: 代码inselfsonginitdef错误line
2条回答

这里

happy_bday = Song(["\n\nHappy birthday to you",
            "I don't want to get sued",
            "So I'll stop right there.\n\n\n"])

您正在传递一个list[...],即1个参数。异常表示2 given,因为self作为参数隐式传递。但是您声明的__init__方法需要3

  • self
  • lyrics
  • feliz

我建议您删除feliz参数,因为不管您作为参数传递什么,您只需为feliz分配一个字符串"feliz navidad, etc etc"

def __init__ (self, lyrics):

您定义了__init__函数来接受两个参数lyricsfeliz。您只传递了一个参数,它似乎是lyrics。你知道吗

你的问题不清楚你想要你的代码做什么。如果只想传递一个参数,只需从__init__的参数列表中删除feliz,这样就只需def __init__(self, lyrics)。现在,您根本没有使用feliz参数,因此它似乎没有任何用途。你知道吗

我还建议您阅读the Python tutorial,以掌握Python的基本知识。你知道吗

相关问题 更多 >

    热门问题