Define the Artist class with a constructor to initialize an artist's information and a print_info() method. The constructor should by default initialize the artist's name to "None" and the years of birth and death to 0. print_info() should display Artist Name, born XXXX if the year of death is -1 or Artist Name (XXXX-YYYY) otherwise. Define the Artwork class with a constructor to initialize an artwork's information and a print_info() method. The constructor should by default initialize the title to "None", the year created to 0, and the artist to use the Artist default constructor parameter values. Ex: If the input is: Pablo Picasso 1881 1973 Three Musicians 1921 the output is: Artist: Pablo Picasso (1881-1973) Title: Three Musicians, 1921 If the input is: Brice Marden 1938 -1 Distant Muses 2000 the output is: Artist: Brice Marden, born 1938 Title: Distant Muses, 2000 This code is correct but it says: TypeError: __init__() missing 3 required positional arguments: 'name', 'birth_year', and 'death_year' and TypeError: __init__() missing 3 required positional arguments: 'title', 'year_created', and 'artist' class Artist: def __init__(self, name, birth_year, death_year): self.name = "None" self.birth_year = 0 self.death_year = 0 def __init__(self, name, birth_year, death_year): self.name = name self.birth_year = birth_year self.death_year = death_year def print_info(self): if self.death_year == -1: print("Artist: "+self.name, end="") print(", born "+str(self.birth_year), end = "") else: print("Artist: "+self.name, end=" ") print("("+str(self.birth_year)+"-" + str(self.death_year)+")", end="") class Artwork: def __init__(self, name, birth_year, death_year): self.title = "None" self.year_created = 0 def __init__(self, title, year_created, artist): self.title = title self.year_created = year_created self.art = artist def print_info(self): self.art.print_info() print("\nTitle: "+self.title + ", "+ str(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()
OOPs
In today's technology-driven world, computer programming skills are in high demand. The object-oriented programming (OOP) approach is very much useful while designing and maintaining software programs. Object-oriented programming (OOP) is a basic programming paradigm that almost every developer has used at some stage in their career.
Constructor
The easiest way to think of a constructor in object-oriented programming (OOP) languages is:
Define the Artist class with a constructor to initialize an artist's information and a print_info() method. The constructor should by default initialize the artist's name to "None" and the years of birth and death to 0. print_info() should display Artist Name, born XXXX if the year of death is -1 or Artist Name (XXXX-YYYY) otherwise.
Define the Artwork class with a constructor to initialize an artwork's information and a print_info() method. The constructor should by default initialize the title to "None", the year created to 0, and the artist to use the Artist default constructor parameter values.
Ex: If the input is:
Pablo Picasso
1881
1973
Three Musicians
1921
the output is:
Artist: Pablo Picasso (1881-1973)
Title: Three Musicians, 1921
If the input is:
Brice Marden
1938
-1
Distant Muses
2000
the output is:
Artist: Brice Marden, born 1938
Title: Distant Muses, 2000
This code is correct but it says:
TypeError: __init__() missing 3 required positional arguments: 'name', 'birth_year', and 'death_year'
and
TypeError: __init__() missing 3 required positional arguments: 'title', 'year_created', and 'artist'
class Artist:
def __init__(self, name, birth_year, death_year):
self.name = "None"
self.birth_year = 0
self.death_year = 0
def __init__(self, name, birth_year, death_year):
self.name = name
self.birth_year = birth_year
self.death_year = death_year
def print_info(self):
if self.death_year == -1:
print("Artist: "+self.name, end="")
print(", born "+str(self.birth_year), end = "")
else:
print("Artist: "+self.name, end=" ")
print("("+str(self.birth_year)+"-" + str(self.death_year)+")", end="")
class Artwork:
def __init__(self, name, birth_year, death_year):
self.title = "None"
self.year_created = 0
def __init__(self, title, year_created, artist):
self.title = title
self.year_created = year_created
self.art = artist
def print_info(self):
self.art.print_info()
print("\nTitle: "+self.title + ", "+ str(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()
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 1 images