【发布时间】:2019-12-07 01:20:41
【问题描述】:
我的代码给出的错误为TypeError: __init__() takes 2 positional arguments but 4 were given。试图寻找一个额外的论点,但找不到。
尝试了以前回答的问题,但没有得到任何适当的解决方案。
我的代码如下:
from abc import ABCMeta, abstractmethod
class Book(object, 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, price):
self.price = price
def display():
print('Title: {}'.format(title))
print('Author: {}'.format(author))
print('Price: {}'.format(price))
title=input()
author=input()
price=int(input())
new_novel=MyBook(title,author,price)
new_novel.display()
编译器给出如下运行时错误
Traceback (most recent call last):
File "Solution.py", line 23, in <module>
new_novel=MyBook(title,author,price)
TypeError: __init__() takes 2 positional arguments but 4 were given
【问题讨论】:
-
要添加到@gbtimmon,特别是解释错误消息-
MyBook(title,author,price)将传递四个参数:(self, title, author, price)。同时,MyBook.__init__被定义为只期望两个:(self, price)。 (您在Book中写的内容无关紧要。)因此错误消息(“__init__() 接受 2 个位置参数,但给出了 4 个”)。
标签: python arguments positional-parameter