Python 如何正确初始化类
对于python任务,我必须创建类并初始化它们。我正确创建了它们,但是自动分级器说它们没有正确初始化 使用构造函数和print_info()方法定义艺术家类以初始化艺术家的信息。默认情况下,构造函数应将艺术家的姓名初始化为“无”,并将出生和死亡年份初始化为0。print_info()应显示艺术家姓名,如果死亡年份为-1,则显示出生于XXXX,否则显示艺术家姓名(XXXX-YYYY) 使用构造函数和print_info()方法定义Artwork类以初始化Artwork的信息。默认情况下,构造函数应将标题初始化为“无”,创建年份初始化为0,艺术家应使用艺术家默认构造函数参数值 到目前为止,我所拥有的:Python 如何正确初始化类,python,class,initialization,Python,Class,Initialization,对于python任务,我必须创建类并初始化它们。我正确创建了它们,但是自动分级器说它们没有正确初始化 使用构造函数和print_info()方法定义艺术家类以初始化艺术家的信息。默认情况下,构造函数应将艺术家的姓名初始化为“无”,并将出生和死亡年份初始化为0。print_info()应显示艺术家姓名,如果死亡年份为-1,则显示出生于XXXX,否则显示艺术家姓名(XXXX-YYYY) 使用构造函数和print_info()方法定义Artwork类以初始化Artwork的信息。默认情况下,构造函数应
class Artist:
def __init__(self, user_artist_name="None", user_birth_year=0, user_death_year=0):
self.name = user_artist_name
self.birth = user_birth_year
self.death = user_death_year
def print_info(self):
if self.death == -1:
print("Artist: {}, born {}".format(self.name, self.birth))
else:
print("Artist: {} ({}-{})".format(self.name, self.birth, self.death))
class Artwork:
def __init__(self, user_title= "None", year_created=0, user_artist=Artist()):
self.title = user_title
self.year = year_created
self.artist = user_artist
def print_info(self):
print("Title: {}, {}".format(self.title, self.year))
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)
user_artist.print_info()
new_artwork = Artwork(user_title, user_year_created, user_artist)
new_artwork.print_info()
艺术家('Pablo Picasso',1881年,1973年)未能正确初始化艺术家。艺术家和艺术品的默认参数的构造函数都失败
我遗漏了什么?看起来这个练习经历了多个变量更新,他们忘记了更新很多init值的模板。无论如何,这应该很好 main.py 艺术家派伊 Artwork.py
经历了同样的任务,遇到了不同的问题。我得到一个错误:“回溯(最近一次呼叫): 文件“main.py”,第37行,在 新作品。打印信息() AttributeError:“Artwork”对象没有“print\u info”属性 我在几个不同的地方调用print_info(),为什么在最后一个实例中它失败了 我的“def print_info(self)”功能是否存在需要修复的问题 谢谢 我的代码:
from Artist import Artist
from Artwork import Artwork
class Artist:
def __init__(self, name="None", birth_year=0, death_year=0):
self.name = name
self.birth_year = birth_year
self.death_year = death_year
def print_info(self):
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))
class Artwork:
def __init__(self, user_title="None", year_created=0, user_artist=Artist()):
self.title = user_title
self.year_created = year_created
self.artist = user_artist
def print_info(self):
self.artist.print_info()
print('Title: %s, %d' % (self.title, self.year_created))
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()
你的代码看起来很好!与教授取得联系。也许他们的意思是“
print_info()
应该显示艺术家姓名,如果死亡年份为0,则出生于XXXX”我试过a=Artist('Pablo Picasso',1881,1973)
然后a.print_info()
,效果很好。为什么您认为它不起作用?不要使用默认值user\u artist=artist()
。请参阅提供预期的。显示中间结果与您预期的不同之处。我们应该能够复制和粘贴一个连续的代码块,执行该文件,并再现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和期望的输出来测试我们的建议。请参考发布指南并完成发布:您的发布必须是独立的。场外链接是不可接受的。您有几个人试图猜测您的问题需求。这可能适用于帮助站点,但不适合堆栈溢出。您是在回答问题,还是在发布自己的其他问题?请阅读SO关于如何回答问题的指南。
class Artist:
def __init__(self, name="None", birth_year=0, death_year=0):
self.name = name
self.birth_year = birth_year
self.death_year = death_year
def print_info(self):
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))
from Artist import Artist
class Artwork:
def __init__(self, user_title="None", year_created=0, user_artist=Artist()):
self.title = user_title
self.year_created = year_created
self.artist = user_artist
def print_info(self):
self.artist.print_info()
print('Title: %s, %d' % (self.title, self.year_created))
from Artist import Artist
from Artwork import Artwork
class Artist:
def __init__(self, name="None", birth_year=0, death_year=0):
self.name = name
self.birth_year = birth_year
self.death_year = death_year
def print_info(self):
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))
class Artwork:
def __init__(self, user_title="None", year_created=0, user_artist=Artist()):
self.title = user_title
self.year_created = year_created
self.artist = user_artist
def print_info(self):
self.artist.print_info()
print('Title: %s, %d' % (self.title, self.year_created))
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()