支持故障排除初学者课程代码

时间:2019-02-12 02:47:24

标签: python python-3.x

我正在学习编码,并且相信我遵循了测试脚本,但是在第12行出现错误

尝试调整间距,但不起作用。

class Song(object):

    def _init_(self, lyrics):
        self.lyrics = lyrics

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

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

bulls_on_parade = Song(["They rally around tha family",
                        "With a pocket full of shells"])

happy_bday.sing_me_a_song()

bulls_on_parade.sing_me_a_song()

它应该将每首歌曲的歌词打印出来,但我却得到:

Traceback (most recent call last):
  File "ex40.py", line 12, in <module>
    "So I'll stop right there"])
TypeError: object() takes no parameters

但是不确定我在第12行寻找什么

2 个答案:

答案 0 :(得分:1)

__init__的每一侧都需要两个下划线:

def __init__(self, lyrics):

这是因为__init__在Python中有一个special meaning,并且按照惯例,所有此类名称都以两个下划线开头和结尾。

此外,在Python 3中,无需像all classes inherit from object automatically那样从object继承:

class Song:

但是,保留显式继承没有什么害处,如果要支持Python 2,这是必要的。

答案 1 :(得分:-1)

问题在于参数object没有任何参数,因此没有初始化。您的类的参数应导入另一个类,然后在init函数中对其进行初始化。因此,只需删除对象作为参数即可。还为init函数添加两个下划线,使其看起来像__init__