【发布时间】:2021-03-21 16:12:31
【问题描述】:
完成一项作业,并尝试对类和模块进行多次更改,但我仍然收到错误消息,“TypeError:Artist() 不接受任何参数”。
作业指出: 在 Artist.py 中定义 Artist 类,使用构造函数初始化艺术家信息。默认情况下,构造函数应该将艺术家的名字初始化为“None”,并将出生和死亡的年份初始化为 0。
使用构造函数在 Artwork.py 中定义 Artwork 类以初始化艺术品的信息。默认情况下,构造函数应该将标题初始化为“None”,创建年份为 0,并且艺术家使用 Artist 的默认构造函数参数值。添加导入语句以导入 Artist 类。
将 import 语句添加到 main.py 以导入 Artist 和 Artwork 类。
例如:
如果输入是: 巴勃罗毕加索 1881 1973年 三位音乐家 1921
输出是: 艺术家:巴勃罗毕加索(1881-1973) 标题:三位音乐家,1921 年
如果输入是: 布莱斯·马登 1938
遥远的缪斯 2000
输出是: 艺术家:布莱斯·马登,生于 1938 年 标题:遥远的缪斯,2000
我的代码:
class Artist:
def __init__(self, name ="None", birth_year = 0, death_year = 0):
"""
Constructor to initialize the name, birth_year and death_year to specified values
default of "None", 0 and 0 respectively
"""
self.name = name
self.birth_year = birth_year
self.death_year = death_year
def print_info(self):
"""
Function to display the information of the Artist
"""
if self.death_year == -1:
print('Artist: {}, born {}'.format(self.name, self.birth_year))
else:
print('Artist: {} ({}-{})'.format(self.name, self.birth_year, self.death_year))
#end of Artist.py
from Artist import Artist
class Artwork:
def __init__(self, title = "None", year_created = 0, user_artist = Artist()):
"""
Constructor to initialize the title, year_created and artist to specified values
default of "None", 0 and default artist respectively
"""
self.title = title
self.year_created = year_created
self.artist = user_artist
def print_info(self):
"""
Function to display the information of the Artwork
"""
self.artist.print_info() # display the information for Artist
print("Title: %s, %d" % (self.title, self.year_created))
#end of Artwork.py
from Artist import Artist
from Artwork import Artwork
if __name__ == "__main__":
user_artist_name = input()
user_birth_year = int(input())
user_death_year = int(input())
user_title = input()
user_year_created = int(input())
user_artist = Artist(user_artist_name, user_birth_year, user_death_year)
new_artwork = Artwork(user_title, user_year_created, user_artist)
new_artwork.print_info()
#end of main.py
ERROR:
Traceback (most recent call last):
File "main.py", line 54, in <module>
user_artist = Artist(user_artist_name, user_birth_year, user_death_year)
TypeError: Artist() takes no arguments
【问题讨论】:
-
请提供预期的MRE - Minimal, Reproducible Example。显示中间结果与预期结果的偏差。我们应该能够将您的代码块粘贴到文件中,运行它并重现您的问题。这也让我们可以在您的上下文中测试任何建议。您发布的程序挂起等待输入。不要指望我们提供测试数据:只需将您的
input替换为引发问题的测试用例即可。 -
使用完全相同的设置,它适用于我。您是否在其他地方定义了
Artist? -
你用的是什么版本的python?
-
你把这些都放在一个文件里了吗?错误说它在第 54 行,这很奇怪。我已经尝试将每个复制到自己的文件中,它运行正常。
-
我们还希望您在错误点之前跟踪可疑值。您对他们如何获得这些价值观感到困惑?特别是,此时
Artist是什么?也打印它的类型和值。