抽象类:观察_init_类型错误

时间:2016-05-16 16:44:38

标签: python

请找到以下问题:

给定Book类和Solution类,编写一个执行以下操作的MyBook类: •继承自Book •参数化构造函数具有以下参数:1.string 2.string 3.int

•实现Book类的abstract display()方法,以便打印这些行:1。,一个空格,然后是当前实例。 2.,一个空格,然后是当前实例的。 3.,一个空格,然后是当前实例的。

输入格式

。 Solution类应该创建一个Book对象并调用MyBook类构造函数(向它传递必要的参数)。然后它调用Book对象上的display方法。

输出格式

该方法应该打印并标记MyBook对象的相应的,和MyCh对象的实例(每个值在它自己的行上),如下所示: 标题:$ title 作者:$ author 价格:$ price

示例输入

The Alchemist
Paulo Coelho
248

示例输出

以下输出应由display()方法打印:

Title: The Alchemist
Author: Paulo Coelho
Price: 248

这是我的代码:

from abc import ABCMeta, abstractmethod
class Book:
    __metaclass__ = ABCMeta
    def __init__(self,title,author):
        self.title=title
        self.author=author   
    @abstractmethod
    def display(): pass

#Write MyBook class
class MyBook(Book):
    def _init_(self, title, author, price):
        Book.__init__(self, title, author)
        self.price=price
    def display (self):
        print "Title: %s" %(title)
        print "Author: %s" %(author)
        print "Price: %d" %(price)

title=raw_input()
author=raw_input()
price=int(raw_input())
new_novel=MyBook(title,author,price)
new_novel.display()

看起来我已正确编写代码但是收到错误消息:

 new_novel=MyBook(title,author,price)
TypeError: __init__() takes exactly 3 arguments (4 given)

我在这里犯了一个错误。请提供您宝贵的建议

1 个答案:

答案 0 :(得分:2)

您的init需要定义为__init__而不是_init_

class MyBook(Book):
    def __init__(self, title, author, price):
        Book.__init__(self,title, author)
        self.price=price
    def display (self):
        print "Title: %s" %(title)
        print "Author: %s" %(author)
        print "Price: %d" %(price)

此输入:

title="The Alchemist"
author="Paulo Choelo"
price=248
new_novel = MyBook(title,author,price)
new_novel.display()

创建所需的输出:

Title: The Alchemist
Author: Paulo Choelo
Price: 248