请找到以下问题:
给定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)
我在这里犯了一个错误。请提供您宝贵的建议
答案 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