我正在学习编码,并且相信我遵循了测试脚本,但是在第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行寻找什么
答案 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__
。