我有一个列表,其中填充了类的实例,因此我想对每个元素应用不同的方法,而无需定义用于应用每个方法的循环。如何正确执行?
我创建了一个类,并将对象的属性定义为填充有数据的字典,然后使用类方法将对象存储在列表中。我找到了一种使用静态方法将方法应用于每个对象的方法,该方法从列表中“提取”每个对象,然后将该方法应用于每个对象(列表元素)。事实是,我创建了两个方法(静态方法和实例方法)来执行此操作,并且需要应用更多方法,但是我想重新利用第一个静态方法。最初,我在static内部调用了实例方法...但是,对于每个实例方法使用相同的解决方案,它将变得多余。因此,我发现像生成器一样编写静态方法会有所帮助。让我告诉你。
class Flight:
def __init__(self,flightdata):
self.flightdata = flightdata
@classmethod
def fcreator(cls,x,flightRecord =[]):
for j in range(x):
data_descriptor = ['key1','key2']
data_filler = []
print(f'\nWrite flight info {j+1}:\n')
for i in range(len(data_descriptor)):
info = input(f"Type {data_descriptor[i]}: ")
data_filler.append(info)
flight_dict = dict(zip(data_descriptor,data_filler))
fdata = Flight(flight_dict)
flightRecord.append(fdata)
return flightRecord
def displayInfo(self,element):
for self in Flight.extractObject(element):
for k,v in self.flightdata.items():
print('\t'+k +': ',self.flightdata[k]+'\n')
@staticmethod
def extractObject(element): # Generador
for i in range(len(element)):
print(f'\nFlight {i+1}:')
yield element[i]
n= int(input('Number of objects to create: '))
obj = Flight.fcreator(n)
print(type(obj[0]))
print(obj)
这行使我感到不舒服,因为我不知道该方法是将生成的每个元素“ Flight.extractObject(obj)”识别为实例(自身)还是将其作为参数。我必须以“异常”的方式应用实例方法,以便它可以工作。
Flight.displayInfo(Flight.extractObject(obj),obj)
根据上述想法,我可以定义所需的其他方法,并从静态方法中获取生成的元素并执行所需的操作。你怎么看? 非常感谢您的帮助。谢谢。