我想打印一个类属性,实例列表的一部分,只有当这个属性存在时
我创建了一个类名 Guitarist,其中包括一个名称属性和 otherItems(通常是一个字典,供用户添加其他数据,如乐队、吉他等......)。它将类添加到列表中(我希望我不会混淆术语)我创建了另一个名为 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"
打印结果:列表中每个项目的名称、吉他(如果存在)和字典的其他项目
因此,对于此代码,我希望打印功能仅将 tomMisch 项目标识为具有吉他属性,然后打印它。对于其他人,只需打印名称和 otherItems 字典中的所有内容:
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)