简体   繁体   中英

How to fix 'object() takes no parameters' error when creating object?

I am trying to run the program from the book Learn Python the Hard Way but it's throwing an error. Could you please help me on what I am doing wrong here?

This is the error message I'm getting:

Traceback (most recent call last):
  File "C:\Desktop\Python-testing\My-file.py", line 11, in 
<module>
    "So I'll stop right there"])
TypeError: object() takes no parameters

This is the Python Code:

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 dont want to get sued",
               "So I'll stop right there"])

bulls_on_parade = Song(["The rally around the family",
                    "with pockets ful of shales"])

happy_bday.sing_me_a_song()
bulls_on_parade.sing_me_a_song()

In python, the initializer method is named __init__ , not _init_ (two underscores instead of one). So the method definition

def _init_(self, lyrics):

just defines an ordinary method, instead of overriding object.__init__ . Therefore, when you initialize the class with an argument, object.__init__(['Happy birthday...']) gets called, and that fails.

To fix this problem, write __init__ with 2 underscores at each side (4 total):

def __init__(self, lyrics):

Your constructor should be def __init__ rather than def _init_ .

The Python interpreter recognizes def _init_ as a normal function and hence, it cannot find a constructor, and hence the error that "object() doesn't take arguments".

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM