Я хочу напечатать атрибут класса, часть списка экземпляров, только если этот атрибут существует
я создал имя класса Guitarist, которое включает в себя атрибут имени и другие элементы (обычно это словарь)для пользователя, чтобы добавить дополнительные данные, такие как группа, гитара и т. д.).Он добавляет класс в список (надеюсь, я не путаю термины), я создал другой класс под названием FenderGuitarist, который наследует Guitarist, и добавляет атрибут гитару в конструктор.Как мне изменить функцию печати, которая получает список гитаристов в качестве параметра, что только если он идентифицирует атрибут гитары, он печатает его?примечание: пожалуйста, не обращайте внимания на тот факт, что пользователь может добавить атрибут гитары и к другому словарю otherItems.
guitarists = []
class Guitarist:
playing_instrument = "guitar"
def __init__(self, name, otherItems=None):
self.name = name
self.otherItems = otherItems
guitarists.append(self)
def __str__(self):
return "Guitarist"
def get_playing_instrument(self):
return self.playing_instrument
def print_list(list):
for item in list:
print(f"name {item.name}", end="")
if item.otherItems is not None:
print(":")
for key,value in item.otherItems.items():
print(key, value)
print()
class FenderGuitarist(Guitarist):
def __init__(self, name, otherItems=None):
Guitarist.__init__(self, name, otherItems=None)
self.guitar = "Fender"
def __str__(self):
return "Fender Guitarist"
результат печати: имя, гитара (если есть) и другие элементы диктионара для каждого элемента вlist
Так что для этого кода я бы хотел, чтобы функция печати идентифицировала только элемент tomMisch как имеющий атрибут гитары, а затем распечатала его.для остальных просто напечатайте имя и все, что в другом словарном пункте:
from classes import *
johnMayer = Guitarist("John Mayer", {"favorite guitar": "Fender/PRS"})
dictJimmy = {"band": "Led Zeppelin", "favorite guitar": "Gibson"}
jimmyPage = Guitarist("Jimmy Page", dictJimmy)
tomMisch = FenderGuitarist("Tom Misch")
print_list(guitarists)